Saya ingin memuat file geoJSON (poligon) ke peta leaflet saya. Saya telah melihat contoh di mana geoJSON tertanam ke dalam kode javascript tetapi saya tidak dapat menemukan contoh yang menunjukkan bagaimana hal itu dilakukan dengan file eksternal.
<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>
Jawaban:
Lihatlah ke Leaflet-Ajax. Ini merampingkan segalanya. Akan memberikan suara untuk Neogeomat untuk menyebutkannya.
Dapatkan skrip di sini ( github repo ) dan tambahkan ke tajuk Anda:
Maka itu masalah mengunggah dengan nama file.
Perbaikan yang benar-benar lurus ke depan dan berfungsi. Jadi yay
sumber
Anda dapat menggunakan jquery Ajax untuk memuat data dan kemudian menambahkannya.
atau Anda dapat menggunakan plugin leaflet-ajax
sumber
Inilah solusi minimum vanilla js saya. Lihat ma, tidak diperlukan jquery untuk panggilan ajax cepat ke file.
sumber
new
kata kunci untukgeoJSON
fungsi pabrik, tetapi mendapat kesalahan CORS dengan garis setRequestHeader di sana, jadi hapus dan berfungsi dengan baik (harus ada pengaturan di server saya).XML Parsing Error: not well-formed
kesalahan diLine Number 1, Column 1:
. Ya, karena datanya adalah geojson, mengapa ia mencoba menguraikannya sebagai XML? Saya tidak mengerti masalahnya, tetapi saya ingin mengimpor data saya tanpa Ajax.Di elemen kepala, Anda mereferensikan file Anda:
Dan kemudian di dalam tubuh:
Anda tidak perlu "menempatkan" mereka di grup layer ...
sumber
<script src="usStates.geojson" type="text/javascript"></script>
dan ditambahkanL.geoJson(usStates).addTo(map);
ke bagian bawah kode saya. ide?setelah menambahkan
var usStates =
ke bagian atas file geojson saya kode berfungsi.sumber