Какой источник данных предпочтительнее для Google Maps, KML или JSON?

Я полностью вижу преимущества JSON, получаю легкий массив данных, чтобы вставить его в свои Google Maps (и шаблон, чтобы показать список точек). Я слышал много разговоров о KML.

Какой способ вытащить точки на Google Maps предпочтительнее, JSON || КМЛ? Меня в первую очередь беспокоит производительность, а также широта функций, которые потенциально могут улучшить карту.


person Chaddeus    schedule 24.11.2010    source источник


Ответы (5)


Лично я использую json, потому что функции, полученные в результате kml, менее гибкие, чем функции, которые вы создаете при разборе json. Например, вы не можете добавить событие наведения к полигону из kml.

person Argiropoulos Stavros    schedule 24.11.2010
comment
Я согласен... Я буду придерживаться JSON. Спасибо за ответ. - person Chaddeus; 25.11.2010
comment
Это было отмечено как ответ некоторое время назад. У меня возник вопрос. Задавался вопросом о производительности полигонов в json и kml. Я могу очень быстро загрузить слой kml и не сильно повлиять на производительность браузера. Это то же самое с json? - person user3032973; 22.04.2014
comment
Если мне нужно прочитать GeoJSON, должен ли он быть общедоступным? Или его можно получить непосредственно из БД и привязать к карте. Поддерживает ли GeoJSON кэширование? - person gorp88; 05.10.2018

KML, будучи XML, очень тяжеловесен по сравнению с JSON, если вы просто загружаете более простые данные и в результате будете страдать от снижения производительности не только при передаче по сети, но и во времени анализа. Недостатком JSON, конечно же, является то, что вы ограничены не только в потенциальной выразительной силе (в зависимости от того, что компоненты Google Maps могут потреблять через JSON, а не KML), но и в том, какие клиенты могут использовать ваши данные. Если вы предоставляете свои данные в формате KML, все, что читает KML, может использовать ваши данные, например Google Планета Земля. Это похоже на RSS географических данных, если вы хотите или нуждаетесь в этом.

person Wyatt Anderson    schedule 24.11.2010
comment
Это глупо, и XML, и JSON сжимаются при передаче. Если вы заботитесь о производительности синтаксического анализа, вам все равно придется преобразовать ответ API в двоичный формат. - person Navin; 12.03.2018

За последние несколько месяцев я много работал с OpenLayers, и мне это очень понравилось. Библиотека с открытым исходным кодом и включает множество форматов, включая GeoJSON и KML. Вот пример, демонстрирующий интеграцию с Google Maps. здесь остальные примеры. Объединение OpenLayers и ExtJS приводит к GeoExt (примеры здесь).

person Corey Farwell    schedule 24.11.2010

Я хотел бы обосновать KML, особенно в контексте Google Maps:

  1. KML — это официальный стандарт, созданный OGC;
  2. Компания Google сама создала KML и поддерживает обширную документацию об этом. У него даже есть библиотека для KML;
  3. API карт Google хорошо поддерживает слои KML (хотя он также имеет хорошие поддержка GeoJSON);
  4. Многие другие картографические приложения Google (Google Earth, Google My Maps, Google Maps Routing) изначально экспортируют KML или предлагают загрузить/сохранить данные как KML. Эта функция импорта/экспорта, насколько я знаю, не так развита для GeoJSON, по крайней мере, пока (по состоянию на 2016 год).
person heltonbiker    schedule 15.04.2016

Вы можете конвертировать между KMZ, KML и GeoJSON:

KMZ — это просто ZIP-архив файла KML. Так что по крайней мере KMZ -> KML легко.

# GeoJSON -> KML
$ ogr2ogr -f 'KML' -a_srs EPSG:4326 output.kml input.geojson

# KML -> GeoJSON
$ ogr2ogr -preserve_fid -f GeoJSON -a_srs EPSG:4326 output.geojson input.kml

А также

# KML -> GeoJSON
$ pip3 install kml2geojson --user
$ k2g input.kml output_directory

Если скорость загрузки вызывает беспокойство, я бы выбрал сжатый файл. Мое предположение: GeoJSON намного меньше для небольших данных, KMZ намного меньше, если ваши функции становятся более сложными. Но я был бы рад увидеть некоторые тесты/цифры/примеры.

person Martin Thoma    schedule 24.07.2018