2016-04-25 3 views
1

Я работаю с geoJSON в первый раз. Я использую его для отображения точек и многоугольников на моей карте Leafletjs.geoJSON файловая структура

У меня есть следующее: 59 точек карты (примерно), 5 строительных площадок (многоугольник) и 32 здания (многоугольник), которые мне нужно иметь в моем файле geoJSON.

Я не уверен, что мне нужно создать несколько файлов JSON или все они могут жить в одном файле. Мне нужно разделить их на 3 группы: точки карты, строительство и здания в одном файле JSON, если это возможно.

Я заметил в документации (geojson.org), что существует глобальный тип, и они используют «FeatureCollection». Можно ли это назвать другим, чтобы я мог сделать свои три группы? Я также замечаю коллекцию функций и тип функции для каждого элемента. Можно ли их назвать как-то?

ответ

2

Нет, вы не можете использовать другие имена для «FeatureCollection» или «Feature». Ближайшие вы можете прийти в группы в GeoJSON, чтобы дать характеристикам каждой группы общий «тег». Как

"features": [ 
    {"type": "Feature", "properties": {"group": "group1"}, ...}, 
    {"type": "Feature", "properties": {"group": "group2"}, ...}, 
    {"type": "Feature", "properties": {"group": "group3"}, ...}] 

Затем, используя листовку вы можете связать функции, всплывающие окна или стилизовать их по-разному в зависимости от их «группы» теги/свойства. См. http://leafletjs.com/reference.html#geojson.

2

Как сказал @sgillies, вы не можете изменить значение type в своих данных GeoJSON на что-то отличное от того, что предлагает вам спецификация. В противном случае анализаторы GeoJSON (например, Leaflet) не смогут понять, каковы ваши данные.

Что касается хранения ваших данных в одном файле или в нескольких файлах, зависит от вас.

Теперь следует отметить, что всякий раз, когда вы звоните L.geoJson(myGeoJSONdata), листовка будет создать единую группу слоев, будь то myGeoJSONdata является FeatureCollection, или массив Features.

Поэтому, если вы хотите получить 3 разных группы слоев в листе (например, если вы хотите включить/выключить каждую группу отдельно), самым простым способом было бы разделить ваши данные на 3 разных объекта GeoJSON (например, они могут находиться в одном JS-файле, который определяет 3 разные переменные или 3 различных файла JSON) и для вызова L.geoJson отдельно для каждой группы данных.

У вас есть много других возможностей, в зависимости от ваших навыков программирования, как имеющие свойство в пределах данных GeoJSON, задающее группу, каждая особенность принадлежит (как @sgillies упоминает), то filtering этим свойством при вызове L.geoJson и т.д.

+1

Спасибо за помощь. Я закончил создание 3 отдельных файлов JSON, и все, кажется, работает. Я собираюсь открыть новую тему для нескольких других вопросов. Если бы вы могли помочь с ними, это было бы здорово. –

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