私はグーグルマップv3に取り組んでいます。このマップでは、そのポイントに関する情報を表示する Infowindow を使用して、いくつかのマーカーをそれぞれ表示します。情報のソースは、各ポイントのデータを含む JavaScript 配列であり、ここまではすべて正常に動作します。配列には、(時々) 住所 (場合によっては null) と常に緯度経度座標が含まれているため、住所が存在しない場合は、逆ジオコーディングを行う必要があります。ここに私のコード:
var geocoder = new google.maps.Geocoder();
for(var i=0;i<markersArray.length;i++){
var la=markersArray[i][0]);
var lo=markersArray[i][1]);
gpoint=new google.maps.LatLng( la,lo);
var aMarker = new MarkerWithLabel({ //part of Google Maps Utility Lib
position: gpoint,
map: map,
labelContent: deviceID,
labelAnchor: new google.maps.Point(22, 0),
labelClass: "labelStyle",
html: "<ul><li>Speed: "+markersArray[i][3]+"</li></ul>",
address: markersArray[i][4]
});
if (aMarker.address<="" || aMarker.address==null) {
geocoder.geocode({'latLng': gpoint}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
aMarker.address=results[1].formatted_address;
}
}
});
}
google.maps.event.addListener(aMarker, 'click', function () {
infowindow.setContent(this.html+" "+this.address);
infowindow.open(map, this);
});
....
}
ほとんどすべて問題ありません。マーカーは適切な位置にあり、アドレスが空でリバース ジオコーディングされたものを除いて、正しい住所を含む正しい情報ウィンドウが表示されます。この最後のセットでは、最後の 1 つのマーカー情報ウィンドウのみが正しいアドレスを示し、他のすべての情報ウィンドウ アドレスは空です。何か案が?どうもありがとう!