загрузка kml не удалась в разных браузерах - javascript / geoxml3 / google maps - PullRequest
0 голосов
/ 23 марта 2012

этот код отлично работает в Firefox, в chrome / internet explorer я получаю сообщение об ошибке в консоли «не могу открыть файл» при попытке загрузить kml (сгенерированный из сценария php)

, поскольку он работает в FFЯ не думаю, что у моего кода / kml есть проблема, но, возможно, требуется дополнение, чтобы оно работало в других браузерах?хм ... я не эксперт, любые советы по исправлению проблемы с кодом приветствуются, большое спасибо!

с использованием библиотеки geoxml3 / карт Google apiv3

ссылки: использование geoxml lib: http://erskinelabs.com/cartography-javascript/

Ответы [ 2 ]

2 голосов
/ 30 июля 2012

Проблема с библиотекой GeoXML3 заключается в способе обработки Ajax-запроса в функции geoXML3.fetchXML, которая является устаревшим кодом и немного хитрым. Если вы используете jQuery в своем проекте, вам просто нужно заменить эту функцию внутри файла geoxml3.js следующим кодом:

geoXML3.fetchXML = function (url, callback) {
  function timeoutHandler() {
    callback();
  };
  $.ajax({
    type: "GET",
    url: url,
    success: function(xml) {
        callback(xml);
    }
  });
};

Надеюсь, это поможет!

0 голосов
/ 30 декабря 2012

В дополнение к ответу выше вы должны рассмотреть 1. различное поведение IE в вызовах AJAX (кеш) и 2. вы должны передать DOM (Node) в функцию обратного вызова; в противном случае функция не удастся 3. Еще один недостаток этого подхода в IE заключается в том, что для строк существует ограничение на его преобразование в объекты XML DOM. Это означает, что существует ограничение на размер файлов KML, которые можно загружать и отображать таким образом. Я использовал эту модификацию в geoxml3, чтобы Ajax-вызовы в IE работали:

geoXML3.fetchXML = function (url, callback) {
  function timeoutHandler() {
     callback();
  };
$.ajax({
    type:       "GET",
    cache:      false,      
    url: url,
    success: function(xml) {
        var xmldom = createXMLDocument(xml);
        callback(xmldom);
    }
});  

Для преобразования строки в XML DOM посмотрите здесь http://www.w3schools.com/dom/dom_parser.asp

function createXMLDocument(strResponse)
{
   if (window.DOMParser)
   {
     parser=new DOMParser();
     xmlDoc=parser.parseFromString(strResponse,"text/xml");
   } else // Internet Explorer
   {
      xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
      xmlDoc.async=false;
     xmlDoc.loadXML(strResponse);
   } 
   return xmlDoc;
 }
...