GeoXML3 не может получить файл KML

По какой-то причине я не могу заставить geoxml3 загрузить мой KML-файл. Я пробовал использовать общедоступный URL для файла, и локальная ссылка на файл в Chrome, Safari и Firefox - все это безрезультатно. Когда я использую Chrome, я получаю консольное сообщение, в котором говорится

Невозможно получить файл.

Мой код очень прост:

function initialize() {
var infowindow = new google.maps.InfoWindow({size: new google.maps.Size(150,50) });
var map_canvas = document.getElementById('map_canvas');
var center = new google.maps.LatLng(53, -88);
var map_options = {
  center: center,
  zoom: 4,
  mapTypeId: google.maps.MapTypeId.TERRAIN
};

var map = new google.maps.Map(map_canvas, map_options);

var myParser = new geoXML3.parser({map: map, singleInfoWindow: true});
myParser.parse('https://sites.google.com/site/.../home/kml-files/ontario_regions_yan_1.kml');
}

Я пробовал все различные решения, предлагаемые в других вопросах, но не смог загрузить файл! Есть что-то простое, что мне не хватает?


person adbo    schedule 05.02.2014    source источник


Ответы (2)


Оказывается, к сожалению, у меня не было нужной версии geoxml3.js. Я скачал файл из ветки polys и всего работает отлично.

person adbo    schedule 07.02.2014
comment
Этот ответ должен быть выдвинут ... он тоже помог мне, и я считаю, что это важное замечание - person rorofromfrance; 30.10.2014
comment
Если это помогло вам, примите этот ответ - не стыдно снова принять ответ, если новый ответ лучше отвечает на ваш вопрос, и ничто не мешает вам принять свой собственный ответ. - person Pavel V.; 02.03.2015
comment
Я тоже совершил ту же ошибку. - person joemurphy; 12.05.2015

geoxml3 использует xmlHttpRequest для получения KML, xmlHttpRequest имеет такое же ограничение домена. KML должен находиться в том же домене, что и страница, которая его загружает, или загружаться через прокси-сервер, который находится в том же домене, что и страница, которая его загружает.

Вопрос SO - xmlHttpRequest и межсайтовое ограничение

ваш KML-файл на geocodezip.com через прокси

KmlLayer не имеет этого ограничения (сервер Google загружает KML напрямую)

Домен должен быть таким же. Относительные URL-адреса гарантируют это. Попытка загрузить что-то из http://geocodezip.com на странице в http://www.geocodezip.com не сработает:

comment
Большое спасибо за отличный отклик и демонстрацию. Не могли бы вы пояснить, что вы подразумеваете под «KML должен находиться в том же домене, что и страница, которая его загружает ...»? Я думал, что делаю это, когда помещаю kml в ту же папку, что и файл geoxml3.js? - person adbo; 05.02.2014
comment
Хорошо, извини, я запутался. Ваш первоначальный ответ был связан с картой, на которой мой kml был загружен через geoxml3 и которая реагировала на наведения курсора мыши. Сейчас я вижу только пример, который напрямую добавляет слои kml. Мне нужен geoxml для доступа к полигонам внутри kml. Я не думаю, что смогу реализовать прокси-решение с этим конкретным клиентом. Не могли бы вы подробнее рассказать, как получить доступ к файлу geoxml, если он локальный на веб-сервере? РЕДАКТИРОВАТЬ: извините, опубликовал это без перезагрузки и не видел вашего ответа. Спасибо - person adbo; 05.02.2014
comment
Определите локальный на сервере. Относительный URL-адрес будет работать, пока файл находится в этом месте и сервер настроен на подать. - person geocodezip; 05.02.2014
comment
У меня файл kml находится в той же папке, что и файл geoxml3.js. Я добавил операторы AddType в свой httpd.conf, но все равно не получаю никакой любви. Я пробовал следующее: myParser.parse ('localhost / ottawa_drupal / sites / default / files /); myParser.parse ('./ ontario_regions_yan_1.kml'); myParser.parse ('ontario_regions_yan_1.kml'); извините за форматирование - person adbo; 05.02.2014
comment
Относительный путь относится к тому месту, откуда обслуживается страница, а не к geoxml3.js. - person geocodezip; 05.02.2014
comment
не могу превратить это в чат. Спасибо, что прояснили это. - person adbo; 05.02.2014
comment
Я тоже не болтаю, чего ТАК хочет. - person geocodezip; 05.02.2014