我正在使用Google Maps API v3開發網站。基本的funcionality那就是這件事情重要的是以下幾點:Google Maps API v3 - 在'for'循環中添加事件監聽器僅適用於某些迭代
- 從JS數組,看了幾個點(工作)
- 座標地圖(工作)
- 添加事件上創建標記偵聽點擊事件到每個標記(僅適用於循環的一些迭代)
JS陣列標記信息例如:
var photos = [
{
file: "republica87",
title: "Av. República, 87",
yearA: "2013",
yearB: "1909",
desc: "Edifício típico ...",
author: "Paulo Guedes",
from: "Arquivo Municipal de Lisboa | Fotográfico",
link: "...",
coords: "38.74266,-9.146851,-85",
},
/*...*/
];
對於標記,只有coords
字段是相關的,然後分成經度和緯度(第三個值對此無關緊要)。
然後,內部有一個「for」循環,創建標記,並創建一個「click」事件監聽器爲好,每個標記:
/*...*/
var markercam=new Array();
for (var i=1;i<photos.length;i++){
coords=photos[i].coords;
coords=coords.split(",");
lat=coords[0];
lon=coords[1];
rot=coords[2];
/*...*/
markercam[i] = new google.maps.Marker({
position: new google.maps.LatLng(lat,lon),
map: map,
icon: cameraicon,
url: './galeria.html?id='+i,
indice: i,
shape: shapecirc,
});
google.maps.event.addListener(markercam[i], 'click', function() {
window.location.href = this.url;
});
/*...*/
}
/*...*/
然而,似乎監聽器只添加對於某些標記。我還沒有弄清楚那些可能導致這種情況的標記。作爲參考,創建監聽器的i
的值爲:1,7,9,11,12,13,17,19,22。它們總是相同的。
注意到除了'點擊'監聽器之外,我還添加了'mouseover'和'mouseout'事件,這對每個沒有問題的標記都適用。
具有所有標記信息的文件是
這裏
,並在標記被放置在地圖是
這裏
。正如你所看到的,當點擊某些標記時,你會被髮送到不同的頁面,而其他人則不會做任何事情。例如:最南端的標記工作,最北端的標記不工作。
任何想法?
謝謝!
PS:請原諒任何明顯的編程問題,這是我第一次與JS打交道。
它確實有用!感謝您的建議和解釋。 – fseixas