2011-10-10 28 views
0

我有一個問題。 我一直在尋找一種方法來獲得標記上的onclick函數。 該標記由位置數組構成。 但它似乎並沒有使onclick功能,如果它只能在最後製作的標記上起作用。在Google地圖標記陣列上獲取onclick函數

請幫助我嗎?

這是陣列

var POIArrayVisited = new Array(
    new Array(52.3764, 4.90245, "De Schreierstoren", "POIone"), 
    new Array(52.3727, 4.90036, "De Waag", "POItwo"), 
    new Array(52.3737, 4.90012, "Het Zustersklooster", "POIthree"), 
    new Array(52.3750, 4.89939, "Onze lieve heer op solder", "POIfour"), 
    new Array(52.3741, 4.89808, "Belle het standbeeld", "POIfive")); 

然後創建標記:

// voer de coordinaten van de niet bezochte poi in 
// zet markers voor elk POI 

var i = 0; 
for (i = 0; i < POIArrayVisited.length; i++) { 
    var markerLatlng = new google.maps.LatLng(
        POIArrayVisited[i][0], POIArrayVisited[i][1]) 
    // Place a hit marker 
    markerVisited = new google.maps.Marker({ 
     position: markerLatlng, 
     map: map, 
     icon: imageMarkerOld, 
     title: POIArrayVisited[i][2] 
    }); 
} 

,然後將創建onclick標記。

// For every POI 
var i; 
for (i = 0; i < POIArrayVisited.length; i++) { 
    var POIlinkVisited = POIArrayVisited[i][3]; 
    var OpenPOI = POIlinkVisited; 
    google.maps.event.addListener(markerVisited, "click", function() { 
     //link and update cookie 
     document.cookie = "OpenPOI" + "=" + OpenPOI; 
     window.location.href = "poi.php"; 
    }); 

} 

我不明白我在做什麼錯

回答

1

如果你想使用一個數組,並使用一個鏈接或ID來定義什麼是需要一個其他網頁上打開,你可以使用這個 首先讓你數組與

緯和長 然後標題 和您要使用的值的ID。

var POIArrayVisited = new Array(  new Array(52.3764, 4.90245, "De Schreierstoren", "POIone"), 
              new Array(52.3727, 4.90036, "De Waag", "POItwo"), 
              new Array(52.3737, 4.90012, "Het Zustersklooster", "POIthree"), 
              new Array(52.3750, 4.89939, "Onze lieve heer op solder", "POIfour"), 
              new Array(52.3741, 4.89808, "Belle het standbeeld", "POIfive") 
); 

這種方式,您可以使用此代碼來使一個cookie

// voer de coordinaten van de niet bezochte poi in 
       // zet markers voor elk POI 
       var i=0; 
       for (i=0;i<POIArrayVisited.length;i++) { 
        var markerLatlng = new google.maps.LatLng(POIArrayVisited[i][0],POIArrayVisited[i][1]) 
        // Place a hit marker 
        markerVisited = new google.maps.Marker({ 
         position: markerLatlng, 
         map: map, 
         icon: imageMarkerOld, 
         title: POIArrayVisited[i][2], 
         html: POIArrayVisited[i][3] 
        }); 
        var OpenPOIVisited = POIArrayVisited[i][3]; 
         google.maps.event.addListener(markerVisited, "click", function() { 
          //link and update cookie 
          document.cookie = "OpenPOI"+"="+this.html; 
          window.location.href = "poi.php"; 
        }); 
       } 

,並用這個你可以使用它作爲一個ID爲PHP

    // voer de coordinaten van de niet bezochte poi in 
       // zet markers voor elk POI 
       var i=0; 
       for (i=0;i<POIArrayVisited.length;i++) { 
        var markerLatlng = new google.maps.LatLng(POIArrayVisited[i][0],POIArrayVisited[i][1]) 
        // Place a hit marker 
        markerVisited = new google.maps.Marker({ 
         position: markerLatlng, 
         map: map, 
         icon: imageMarkerOld, 
         title: POIArrayVisited[i][2], 
         html: POIArrayVisited[i][3] 
        }); 
        var OpenPOIVisited = POIArrayVisited[i][3]; 
         google.maps.event.addListener(markerVisited, "click", function() { 
          //link and update cookie 
          window.location.href = "poi.php?id="+this.html; 
        }); 
       } 

OR是要引用轉到html頁面

   // voer de coordinaten van de niet bezochte poi in 
       // zet markers voor elk POI 
       var i=0; 
       for (i=0;i<POIArrayVisited.length;i++) { 
        var markerLatlng = new google.maps.LatLng(POIArrayVisited[i][0],POIArrayVisited[i][1]) 
        // Place a hit marker 
        markerVisited = new google.maps.Marker({ 
         position: markerLatlng, 
         map: map, 
         icon: imageMarkerOld, 
         title: POIArrayVisited[i][2], 
         html: POIArrayVisited[i][3] 
        }); 
        var OpenPOIVisited = POIArrayVisited[i][3]; 
         google.maps.event.addListener(markerVisited, "click", function() { 
          //link and update cookie 
          window.location.href = +this.html".html"; 
        }); 

T hanks爲幫助傢伙! = D

0

在您的代碼:

// For every POI 
var i; 
for (i = 0; i < POIArrayVisited.length; i++) { 
    var POIlinkVisited = POIArrayVisited[i][3]; 
    var OpenPOI = POIlinkVisited; 
    google.maps.event.addListener(markerVisited, "click", function() { 
     //link and update cookie 
     document.cookie = "OpenPOI" + "=" + OpenPOI; 
     window.location.href = "poi.php"; 
    }); 

} 

你從哪裏得到的markerVisited一個新的實例?據我所見,在您發佈的代碼片段中,您正在騎自行車穿越POIArrayVisited,但您沒有獲得markerVisited的新實例。所以這可能是隻有標記實際響應點擊的原因。

應該是類似的東西:

for (var i = 0; i < POIArrayVisited.length; i++) { 
    var markerLatlng = new google.maps.LatLng(POIArrayVisited[i][0], POIArrayVisited[i][1]); 
    // Place a hit marker 
    var markerVisited = new google.maps.Marker({ 
     position: markerLatlng, 
     map: map, 
     icon: imageMarkerOld, 
     title: POIArrayVisited[i][2] 
    }); 

    google.maps.event.addListener(markerVisited, "click", function() { 
      //link and update cookie 
      document.cookie = "OpenPOI" + "=" + OpenPOI; 
      window.location.href = "poi.php"; 
     }); 

} 
+0

非常感謝您的回覆 我只剩下一個問題。 var OpenPOI看起來像這樣 'var OpenPOIVisited = POIArrayVisited [i] [3]; 「 但現在它會始終將數組作爲餅乾在過去的VAR ,而不是像 」標題:POIArrayVisited [I] [2]」 爲每個陣列標題 那麼,爲什麼它的變種工作,但是在新的google.maps中做的。marker 我該如何解決這個問題? –

+0

我不是100%確定如果我瞭解您的問題,但不能將自定義對象設置爲Cookie值。您只能存儲原始數據,如字符串或整數。所以如果你想存儲一個對象(OpenPoi),你應該獨立存儲所有的值,並在獲取cookie時重建變量。 – Jules