我有一些谷歌地圖/ Javascript問題。我想我知道麻煩是什麼,但只是不知道它的方式。谷歌地圖麻煩:關閉和通過引用
我的問題的一個例子是here。無論您點擊什麼標記,第二個都會顯示出來。我顯然將錯誤的信息傳遞給我的事件偵聽器,但我似乎無法獲得正確的代碼。下面的代碼的減少部分:
首先,這裏是我的代碼的一部分:
if (GBrowserIsCompatible() && mapResults != null) {
// Read in the JSON
var mapDetailsArray = loadJSON();
// Create a map
var map = new google.maps.Map2(document.getElementById(elementId));
map.setCenter(new google.maps.LatLng(mapDetailsArray[0].getLatitude(),
mapDetailsArray[0].getLongitude()), 13);
map.addControl(new google.maps.SmallMapControl());
// Add the points and center
var mgr = new google.maps.MarkerManager(map);
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < mapDetailsArray.length; i++) {
var mapDetails = mapDetailsArray[i];
var point = new google.maps.LatLng(mapDetails.getLatitude(), mapDetails
.getLongitude());
bounds.extend(point);
// Create our marker
var marker = new google.maps.Marker(point);
// What action do we use to show the hover
var infoAction = "mouseover";
marker.value = mapDetails;
google.maps.Event.addListener(marker, infoAction, function() {
alert(marker.value);
map.openInfoWindowHtml(point, getResultInfoContent(marker.value));
});
mgr.addMarker(marker, 1);
}
mgr.refresh();
}
「marker.value」最終總是一套作爲什麼mapDetails是最後一個值。如果有的話,我希望它是「未定義的」,因爲一旦循環結束,不應該這個價值消失嗎?我嘗試了各種不同的值(例如marker.value = i + 1;),但它仍然會以兩個點的相同值出現。
有沒有人有任何想法如何將正確的值傳遞給事件監聽器?
這奏效了。乾杯格雷格。我曾嘗試過類似的東西,但減去了包裝代碼的返回函數(){...}。 – 2009-05-06 12:54:38