私はGeoJSONとしてLat/Lonデータを受け取り、各ポイントには追加のプロパティが関連付けられています。KmlPlacemark
がクリックされたときに、これらのプロパティをコールバック関数に渡せるようにする必要があります。クロージャを使用して、イベントリスナーを個別に登録できることはわかっていますが、GEWindow
オブジェクトにリスナーを1つだけ配置することをお勧めします。
私の解決策は、プロパティをJSONデータとして目印IDに貼り付けることです。
var data = {foo: 123, bar: 321};
var placemark = ge.createPlacemark(JSON.stringify(data));
次に、コールバックで解析されてオブジェクトに戻されます
google.earth.addEventListener(ge.getWindow(), 'click', function(e){
var target = e.getTarget(),
data;
if (target && target.getType() == 'KmlPlacemark'){
data = JSON.parse(target.getId());
myHandler(target, data);
}
});
これを行うためのよりハッキーな方法はありますか?