2015-10-29 4 views
1

Я пытаюсь построить карту листов с слоем геойсона. Слой - это огромный файл, поэтому у меня есть отдельный файл с geojson в переменной.Листовка не читает внешние geojson или JS

Однако, когда я запускаю код, я получаю:

Uncaught ReferenceError: myLayer is not defined

<script src="leaflet/mygeofile.geojson"></script> <!-- or use leaflet-src.js --> 

<script src="/leaflet/leaflet.js"></script> <!-- or use leaflet-src.js --> 
<script src="/leaflet/leaflet_javascript.js"></script> <!-- or use leaflet-src.js --> 

<script> 
$(document).ready(function() { 


    //Set attributes of map (location and zoom) 
    var map = L.map('map').setView([51.505, -0.09], 13); 

    //Add base map layer, using a compatible source, with accesstoken/permissions 
    //for more basemaps: https://github.com/leaflet-extras/leaflet-providers 
    L.tileLayer('http://{s}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png', { 
    attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>', 
    maxZoom: 18, 
    id: 'your.mapbox.project.id', 
    accessToken: 'your.mapbox.public.access.token' 
}).addTo(map); 

//***********GEO JSON FILE IS CALLED RIGHT HERE******************* 
L.geoJson(myLayer).addTo(map); 
}); 


</script> 

GeoJSON SAMPLE:

myLayer=[{ 
"type": "FeatureCollection", 
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 

"features": [ 
{ "type": "Feature", "properties": { "Name": null, "description": null, "timestamp": null, "begin": null, "end": null, "altitudeMode": "relativeToGround", "tessellate": -1, "extrude": -1, "visibility": -1, "drawOrder": null, "icon": null, "STATEFP": "17", "COUNTYFP": "019", "TRACTCE": "005401", "BLKGRPCE": "2", "GEOID": "1701900540........... 
}]}] 
+0

является '.geojson' действительное расширение файла? Я бы подумал, что вы должны сохранять свои данные в виде файла '.js' – lucas

+0

Да, я считаю, что это так. Это то, что QGIS сохраняет как автоматически. Тем не менее, я попытался изменить расширение на json и js, и он по-прежнему дает ту же ошибку. Также изменение расширений фактически изменило структуру данных как json вместо формата geojson. – auto

ответ

0

L.GeoJSON ожидает Feature или FeatureCollection объект, массив объектов Feature или null в качестве первого параметра. Не массив, содержащий объект FeatureCollection. Strip окружающие скобки (и это хорошая практика, чтобы объявить переменную с ключевым словом вар, прежде чем использовать его):

var myLayer = { 
    "type": "FeatureCollection", 
    "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 
    "features": [{ 
     "type": "Feature", "properties": { "Name": null, "description": null, "timestamp": null, "begin": null, "end": null, "altitudeMode": "relativeToGround", "tessellate": -1, "extrude": -1, "visibility": -1, "drawOrder": null, "icon": null, "STATEFP": "17", "COUNTYFP": "019", "TRACTCE": "005401", "BLKGRPCE": "2", "GEOID": "1701900540........... 
    }] 
} 

Вы также отсутствует косую черту в атрибуте Src вашего сценария тега. Вы можете проверить, загружены ли все ваши файлы на вкладке «Сеть» инструментов разработчика вашего браузера.

Изменение:

<script src="leaflet/mygeofile.geojson"></script> 

Для

<script src="/leaflet/mygeofile.geojson"></script> 
+0

Спасибо, но я все еще получаю сообщение об ошибке и без слоя, после удаления скобок – auto

+0

Пытаюсь что-то еще, проверьте мое редактирование – iH8

+0

Спасибо, изменил это, но все равно получаю ошибку. Файл отображается на вкладке «Сеть» в «Элементе проверки». – auto

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