Chciałbym załadować plik geoJSON (wielokąt) do mojej mapy ulotki. Widziałem przykłady, w których geoJSON jest osadzony w kodzie javascript, ale nie mogę znaleźć żadnych przykładów pokazujących, jak to się robi z zewnętrznym plikiem.
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5/leaflet.css" />
<script src="usStates.geojson" type="text/javascript"></script>
<style>
html, body, #map {
height: 100%;
}
body {
padding: 0;
margin: 0;
}
</style>
</head>
<body>
<div id="map" style="height: 100%"</div>
<script src="http://d3js.org/d3.v2.min.js?2.9.3"></script>
<script src="http://cdn.leafletjs.com/leaflet-0.5/leaflet.js"></script>
<script type="text/javascript">
var map = L.map('map').setView([38.57, -94.71], 4);
L.tileLayer('http://{s}.tile.cloudmade.com/9067860284bc491e92d2342cc51d47d9/998/256/{z}/{x}/{y}.png', {attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> Imagery © <a href="http://cloudmade.com">CloudMade</a>'}).addTo(map);
var featureStyle = {
"color": "#ff7800",
"weight": 5,
"opacity": 0.2
};
L.geoJson(usStates).addTo(map);
</script>
</body>
Odpowiedzi:
Zajrzyj do Leaflet-Ajax. Usprawnia wszystko. Odda głos za Neogeomat za wzmiankę o nim.
Pobierz skrypt tutaj ( repozytorium github ) i dodaj go do nagłówka:
Następnie należy przesłać nazwę pliku.
Naprawdę prosta naprawa i działa. Więc tak.
źródło
Możesz użyć jQuery Ajax, aby załadować dane, a następnie je dodać.
lub Możesz użyć wtyczki leaflet-ajax
źródło
Oto moje minimalne rozwiązanie waniliowego js. Spójrz, nie potrzeba jquery do szybkiego wywołania ajax do pliku.
źródło
new
słowo kluczowe dlageoJSON
funkcji fabrycznej, ale dostałem błąd CORS z linią setRequestHeader, więc usunąłem go i działało dobrze (musi być jakieś ustawienie na moim serwerze).XML Parsing Error: not well-formed
błąd oLine Number 1, Column 1:
. Skoro dane są geojsonem, dlaczego próbuje je parsować jako XML? Nie rozumiem problemu, ale chciałbym zaimportować moje dane bez Ajaxa.W elemencie head odwołujesz się do swoich plików:
A potem w ciele:
Nie musisz „umieszczać” ich w grupie warstw ...
źródło
<script src="usStates.geojson" type="text/javascript"></script>
i dodałemL.geoJson(usStates).addTo(map);
go na dole mojego kodu. pomysły?po dodaniu
var usStates =
do góry mojego pliku geojson kod zadziałał.źródło