как сделать событие kmllayer всплывающим окном в плагине Google Earth

Я разработал полнофункциональную карту, используя Google Maps API v3, однако я хочу создать точно такую ​​​​же, используя плагин Google Earth. карту можно найти здесь

Мне удалось загрузить файлы kml на GE - континенты и регионы. Как бы то ни было, я не могу заставить событие щелчка работать. Не уверен, как это работает, вот что у меня сейчас есть

google.earth.addEventListener(kmlLayer,'click',function(kmlEvent) {
            kmlEvent.preventDefault(); 
            console.log("help");


            $('#balloon').html("");
            kmlClick = true;
            var surveyid = kmlEvent.featureData.id;

            if(!updateSurveyFlag){
                updateSurveyView(surveyid, updateSurveyFlag);
            }
            console.log("help2");
            $.ajax({
                url : 'http://' + top.location.host + '/mcmap/feed/kml.php?action=kmlclick',
                data : "id=" + surveyid,
                dataType : 'json',
                success : function(data) {

Ничего не выполняется после записи справки в консоль. Я хочу использовать GE, поскольку производительность намного лучше, чем у GM, но только если я использую сетевые каналы. Если бы я использовал метод fetch kml, масштабирование с использованием расширения было бы медленным, как указано в этом проблема


person shorif2000    schedule 28.11.2012    source источник


Ответы (1)


Вполне может быть, что ваш вызов jquery $('#balloon').html(""); не работает. Скорее всего, вы пытаетесь вызвать код до того, как jquery загрузится должным образом.

Чтобы исправить это, убедитесь, что любые вызовы jquery происходят после завершения загрузки.

Кроме того, я бы попытался разделить вызовы, заменив анонимную функцию именованным методом. Это разделение не изменит функциональность, оно просто сделает код более понятным, избегая чрезмерной вложенности.

// called when jquery and the document have finished loading
$(function() {
  google.earth.addEventListener(kmlLayer,'click', myEventListener);
});

// custom event listener
var myEventListener = function(kmlEvent) {
  kmlEvent.preventDefault(); 
  console.log("help");
  $('#balloon').html(""); // should work now as jquery is ready.
  kmlClick = true;
  var surveyid = kmlEvent.featureData.id;
  if(!updateSurveyFlag) {
    updateSurveyView(surveyid, updateSurveyFlag);
  }

  console.log("help2");

  // etc...
}
person Fraser    schedule 29.11.2012