2014-02-05 2 views
1

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

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

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

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'); 
} 

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

ответ

4

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

+1

Этот ответ должен быть выдвинут .. он сделал трюк для меня тоже, и я чувствую, что это важная нота. – rorofromfrance

+0

Если это трюк для вас, примите этот ответ - не стыдно снова принимать ответ, если новый ответ отвечает ваш вопрос лучше, и ничто не запрещает вам принимать свой собственный ответ. –

+0

Я сделал ту же ошибку. – joemurphy

3

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

SO question - xmlHttpRequest and cross-site restriction

your KML on geocodezip.com through a proxy

KmlLayer doesn't have that restriction (google server is loading the KML directly)

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

geocodezip.com и www.geocodezip.com не разные домены (независимо от того, насколько они похожи может выглядеть). Относительный путь относительно того, где выполняется страница (не скрипт geoxml3.js)

+0

Большое спасибо за отличный отклик и демонстрацию. Не могли бы вы рассказать о том, что вы подразумеваете под «KML должен быть в том же домене, что и страница, загружающая его ...»? Я думал, что делаю это, когда я помещаю kml в ту же папку, что и файл geoxml3.js? – adbo

+0

Домен должен быть одинаковым. Относительные URL-адреса гарантируют это. Попытка загрузить что-либо из 'http: // geocodezip.com' на странице на странице http: // www.geocodezip.com' не будет работать: [working] (http://www.geocodezip.com/geoxml3_test/ v3_geoxml3_kmltest_linkto.html? filename = http: //www.geocodezip.com/geoxml3_test/SO_test_20140205_fill1.kml), [не работает] (http://www.geocodezip.com/geoxml3_test/v3_geoxml3_kmltest_linkto.html?filename=http:// geocodezip.com/geoxml3_test/SO_test_20140205_fill1.kml), 'geocodezip.com' и' www.geocodezip.com' - разные домены (независимо от того, как они выглядят) – geocodezip

+0

Хорошо, извините, теперь я смущен. Ваш первоначальный ответ был связан с картой, на которой был загружен мой kml через geoxml3 и отвечал на мыши. Теперь я вижу только пример, который добавляет kml-уровни напрямую. Мне нужен геоксим для доступа к полигонам внутри kml. Я не думаю, что смогу реализовать прокси-решение с этим конкретным клиентом. Не могли бы вы рассказать о том, как сделать geoxml доступ к файлу, если он локален на веб-сервере? EDIT: извините, выложили это без перезагрузки и не видели вашего ответа. thx – adbo

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