1

Google Maps API v3 を使用して完全に機能するマップを設計しましたが、Google Earth プラグインを使用してまったく同じものを作成したいと考えています。地図はここで見つけることができます

GE - 大陸と地域で kml ファイルを読み込むことができました。クリックイベントを機能させることができません。これがどのように機能するかわかりません。以下は私が現在持っているものです

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) {

ヘルプのコンソール ログの後、何も実行されません。パフォーマンスが GM よりもはるかに優れているため、GE を使用したいと考えていますが、ネットワーク リンクを使用する場合に限られます。fetch kml メソッドを使用した場合、この問題で説明されているように、エクステンションを使用してズームインするのに時間がかかります

4

1 に答える 1

0

$('#balloon').html("");jquery の呼び出しが失敗している可能性があります。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...
}
于 2012-11-29T00:41:42.993 に答える