2016-11-15 77 views
0

我想通過使用傳單ajax加載外部geojson。 我認爲geojson的結構是真實的。這是它的link。 這裏是我沒有基於什麼樣的HERE通過使用傳單加載外部geojson文件到傳單地圖ajax

在頭:

<script src="../external/js/leaflet.js"></script> 
<script src="../external/js/leaflet.functionaltilelayer.js"></script> 
<script src="../external/js/leaflet.ajax.min.js"></script> 

在javascript中:

var mymap = L.map('mapid',{ center: new L.LatLng(the_center_splitted[0],the_center_splitted[1]),maxZoom: 17, minZoom:11, zoom: 14}); //creating the map 

var gs = new L.TileLayer('../external/maps/qom/gs/gs_{x}_{y}_{z}.jpg', {opacity: 1,scheme: 'TMS'}).addTo(mymap); //loading image layer 

var geojsonLayer = new L.GeoJSON.AJAX("../external/map/qom/geojson/qom.geojson"); 

geojsonLayer.addTo(mymap); 

但GeoJSON的文件沒有顯示出來,我得到這個錯誤: ncaught TypeError:L.GeoJSON.AJAX不是構造函數
我很感激任何人都可以提供幫助。 謝謝。

+0

編輯您的問題並用代碼標記語法標記代碼。請參閱如何在此處設置格式部分:http://stackoverflow.com/questions/ask – henrik

回答

0

什麼是「functionaltilelayer.js」?在代碼片段中,你不需要這些。 和var gs = new L.tileLayer與更低的噸 - 改變,並再次嘗試!

<script src="../external/js/leaflet.js"></script> 
<script src="../external/js/leaflet.ajax.min.js"></script> 

var mymap = L.map('mapid',{ center: new L.LatLng(the_center_splitted[0],the_center_splitted[1]),maxZoom: 17, minZoom:11, zoom: 14}); //creating the map 

var gs = new L.TileLayer('../external/maps/qom/gs/gs_{x}_{y}_{z}.jpg', {opacity: 1,tms: true}).addTo(mymap); //loading image layer 

var geojsonLayer = new L.GeoJSON.AJAX("../external/map/qom/geojson/qom.geojson"); 

geojsonLayer.addTo(mymap); 
+0

我剛剛刪除,並再次嘗試。沒有錯誤,但geojson文件中有些多邊形的內容沒有顯示在地圖上。 – keloniton

+0

你能告訴我們geojson文件嗎? 也許有什麼不對嗎? – nrhode

+0

我剛發佈。 – keloniton

1

你的代碼似乎好 - 你導入

<script src='leaflet-ajax.js'></script> 

如果是,請您出示整個代碼!

+0

我已添加。是不是從? – keloniton

+0

仔細檢查文件是否實際上由您的網絡瀏覽器加載。使用開發人員控制檯並查找任何網絡錯誤或腳本警告。 – IvanSanchez

+0

我剛剛加載過程,我糾正了相對地址,現在我沒有像以前那樣的錯誤,但是,我的geojson文件中有些多邊形的內容沒有顯示出來,但是! – keloniton

0

通過AJAX導入文件有點棘手。 首先請記住,您給予AJAX()方法的相對路徑應該是a您的Geojson文件應該是leaflet-ajax腳本文件位置的路徑。 (因爲它在那裏AJAX調用完成)。

我會建議不同的方法(沒有AJAX調用):

你GeJson文件(其重命名爲gejson.js)應該是這樣的:

var json = { "type": "FeatureCollection", 
      "features": [{ 
      ... 

導入您的小冊子AJAX在這之前的文件代碼:

<script src="../../geojson.js" type="text/javascript"></script> 

這會給你訪問一個名爲json變量,然後你可以用它來導入JSON對象在層:

var geojsonLayer = L.geoJSON().addTo(mymap); 
geojsonLayer.addData(json); 
+1

他的意思是L.GeoJSON.AJAX擴展名 - 不是L.geojson本身... – nrhode

+0

是的,我知道。我正在提供替代解決方法。 – henrik

+0

@henrik謝謝,但它想要使用* .geojson文件和ajax,而不是js文件。 – keloniton