2016-04-26 3 views
0

Эй, ребята, я пытаюсь создать слой KML для своей карты google на моем собственном веб-сайте на PHP для проекта.Googlemaps Javascript API KML layer - Использование Open charge map api?

URL-адрес API, который я хочу использовать, не работает для меня. API можно найти здесь. http://openchargemap.org/site/develop/api. Его для станций зарядки электрических транспортных средств должны быть представлены на карте.

При использовании других примеров API и googles они отлично работают с моим кодом, используя тот, который мне нужен, не будет работать.

var kmlLayer = new google.maps.KmlLayer({ 
    url: 'http://api.openchargemap.io/v2/poi/?output=kml&countrycode=GB&maxresults=500', 
    suppressInfoWindows: true, 
    map: map 
}); 

Вышеприведенный код находится внутри моей картографической функции.

Я пробовал различные варианты API для URL-адреса, который ни один из них не работает. Пример, приведенный выше, относится к результатам в Великобритании с максимумом 500 с выходом, установленным в KML.

Что я заметил, что может быть полезно, так это то, что когда этот API вводится в браузер с выходом в виде KML, он загружается локально в виде нераспознанного файла, где в качестве образцов Google на странице разработчиков и других APIS загружается непосредственно как KML-х.

Неопознанный файл при открытии с помощью Notepad ++ - это функциональность KML, которую я хочу, и ее можно сохранить в виде KML, который может быть загружен и использован таким образом. Что заставляет меня думать, что может быть что-то не так с API карты Opencharge. Но я все новичок в этом, поэтому любая помощь ценится!

Спасибо, ребята!

KML layers Google Devlopers page

ответ

0

KmlLayer имеет getStatus() метод, который в вашем случае возвращает FETCH_ERROR. Это означает, что google api не может загрузить KML для вас. Они используют свои собственные серверы для подключения к Apache Opencharge и загружают KML, поэтому трудно определить, в чем причина. Но даже когда вы пытаетесь загрузить файл KML самостоятельно, загрузите его и загрузите с вашего сервера, вы получите ошибку INVALID_DOCUMENT, то есть файл недействителен KML или API Google Maps не может его разобрать. Вы можете проверить список возможных статусов в google maps js api docs.

Итак, есть определенная проблема с API, а не с вашим кодом. Что вы можете сделать, так это создать скрипт на вашем сервере, который загрузит KML, проанализирует его и создаст действительный KML, который вы затем загрузите в API. Итак, вам необходимо:

  1. Загрузите URL-адрес со своего сервера и проанализируйте его как XML (KML в XML-нотации). This - пример, как это сделать в php.
  2. Из разобранного XML создайте свой собственный файл KML, содержащий только координаты местоположения и любые необходимые данные.
  3. Сделайте свой скрипт возвратом этого недавно созданного KML.
  4. Загрузка URL вашего скрипта вместо оригинального API, например:

    var kmlLayer = new google.maps.KmlLayer({ url: 'http://yourserver/yourscript&optionalparameters', suppressInfoWindows: true, map: map });

+0

Да, это имеет смысл, я дам этому выстрел. Я сделал именно то, что вы сделали, и создал URL-адрес im, пытаясь получить KML и его загрузку как непризнанный файл для меня тоже .. Спасибо за ответ! – aa29

+0

@ aa29 не имеет значения, является ли файл непризнанным, если данные в нем действительны. Но в этом случае данные недействительны KML-файлу, по крайней мере, не та, которую могут анализировать карты google. Нет проблем с ответом. Если вам нравится ответ, вы можете его перенести. –