Я создал программу hello world для загрузки локального файла kml (заимствованного из документации Google):
var ctaLayer = new google.maps.KmlLayer("http://localhost:8080/kml/cta.kml");
Это не работает (ничего не загружается).
Однако, когда я меняю эту строку на:
var ctaLayer = new google.maps.KmlLayer("http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml");
, она загружается правильно. Оба файла kml идентичны. Что мне нужно сделать, чтобы он загрузился, когда я обслуживаю его сам? (Я пробовал как абсолютные, так и относительные пути, и я знаю пути Я использую правильные ...)
Также я добавил правильный тип mime в файл конфигурации моего сервера приложений:
<mime-mapping>
<extension>kml</extension>
<mime-type>application/vnd.google-earth.kml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kmz</extension>
<mime-type>application/vnd.google-earth.kmz</mime-type>
</mime-mapping>
Но он по-прежнему не загружается.
Я нашел это в docs Google ]:
API Карт Google поддерживает форматы данных KML и GeoRSS для отображения географической информации. Эти форматы данных отображаются на карте с помощью объекта KmlLayer, конструктор которого принимает URL-адрес общедоступного файла KML или GeoRSS.
Итак, я предполагаю, что то, что я пытаюсь сделать, невозможно без обслуживания kml с общедоступного URL ... если кто-то не докажет обратное
KML-файл недоступен, так как он находится на вашем локальном компьютере, и Google не может получить к нему доступ, поскольку не знает, как добраться до localhost: 8080