如何在谷歌地球插件上弹出气球气球的kmllayer事件

时间:2012-11-28 12:34:20

标签: javascript jquery google-earth-plugin

我使用google maps api v3设计了一个功能齐全的地图但是我想使用google earth插件创建完全相同的地图。地图可以找到here

我设法在GE - 大陆和地区加载kml文件。我怎么都无法让click事件发挥作用。不确定这项工作如何以下是我目前的工作

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方法,那么使用此issue

中提到的扩展进行放大是很慢的。

1 个答案:

答案 0 :(得分:0)

很可能你对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...
}