2016-04-30 4 views
0

私のコードにはかなり奇妙な問題があります。私はkmlファイルを解析するためにgeoxml3を使用しています。すべてのポリラインを解析しますが、マーカに到達するとコンソールにはundefinedと表示されます。変わった部分は、ページをリロードするたびにうまくいきますが、新しいタブで開くたびに再び壊れてしまうことです。奇妙でも、ポリラインやマーカーかどうかを確認する条件の直前にconsole.logを置くと、ブラウザのコンソールにというプロパティが表示されます。ページリロード後のJavascriptのみのアクセスオブジェクトのプロパティ

function useTheData(doc){ 
console.log("Starts Parse"); 
console.log(doc[0].placemarks.length); 
for (var i = 0; i < doc[0].placemarks.length; i++){ 
    console.log("i: "+i+", placemark:");  
    console.log(doc[0].placemarks[i]); //here the .marker property exists in the console 
    console.log(".marker:"); 
    console.log(doc[0].placemarks[i].marker); //here it says it's undefined! 
    if(doc[0].placemarks[i].polyline){ //check if it's a polyline 
     google.maps.event.addListener(doc[0].placemarks[i].polyline, 'click', select_option); 
    } 
    else{ 
     console.log("### i = "+i); 
     console.log("1"); 
     console.log(doc[0].placemarks[i].marker); //here, the exact same object, doesn't have the marker property! 
     console.log("2"); 
     google.maps.event.addListener(doc[0].placemarks[i].marker, 'click', select_option); //Because of that, the first time the page loads, it get's stuck in the function cuz it can't access the .marker 
     console.log("3"); 
     doc[0].placemarks[i].marker.setIcon({ 
      url: "img/bola.png", 
      scaledSize: new google.maps.Size(10, 10), 
      anchor: new google.maps.Point(5, 5) 
     }); 
     console.log("4"); 
    } 
} 
console.log("End Parse"); 
google.maps.event.addListener(map, 'click', select_option); 
} 
+0

問題(および使用しているgeoxml3のバージョンの何らかの表示)を示す[最小、完全、テスト済みおよび読み取り可能な例](http://stackoverflow.com/help/mcve)を提供してください。 – geocodezip

+0

'Uncaught ReferenceError:select_optionが定義されていません。 ' – geocodezip

+0

私はgithubからダウンロードした4月4日の最後のバージョンを使用しています。 問題は、geoxmlがローカルサーバーからkmlを取得したため、エラーを完全に再現できるようにコードをサーバーに公開しようとします。 しかし、すべてのaddListener関数を削除してもエラーは発生します。 – Cesar

答えて

1

これはポリゴンとgeoxml3のKMZ枝間の違いの一つが原因です:

はここに必要とgeoxml3私useTheData機能です。

geoxml3のkmzブランチには、パーズ操作が終了した後になるまでアイコンが使用できないようにするためのimg onloadイベントハンドラがあります。アイコンのサイジングが改善されますが、afterParse機能のように問題が発生する可能性があります。

関連する問題