2014-02-15 23 views
1

我正在使用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打交道。

回答

1

它沒有記錄(至少我找不到它),但將optimized屬性的標記設置爲false可以幫我修復它。

,因爲它似乎的setZIndex()呼叫將更新標記圖像的ZIndex,但不是MouseTarget的ZIndex(可點擊區域,它在不同的層中的已定義),當optimized -property設爲true (默認設置)

+0

它確實有用!感謝您的建議和解釋。 – fseixas

相關問題