2016-11-15 20 views
0

Я пытаюсь загрузить внешний geojson, используя буклет ajax. Я думаю, что структура 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 с более низким t - измените это и попробуйте еще раз!

<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(), должен быть вашим файлом Geojson, должен быть путь от местоположения файла сценария листовки-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

Смежные вопросы