我使用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
中提到的扩展进行放大是很慢的。答案 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...
}