2016-06-13 99 views
-1

這是我的代碼塊,我pushRichMarkers入陣:RichMarker:附加點擊事件偵聽器的標誌器陣列

// Populate markers array 
for (let i = 0; i < FOUND_OBJECTS_TEST.length; i++) { 

    let richMarker = new RichMarker({ 
     position: new google.maps.LatLng(FOUND_OBJECTS_TEST[i].latitude, FOUND_OBJECTS_TEST[i].longitude), 
     map: mainMap, 
     draggable: false, 
     flat: true, 
     anchor: RichMarkerPosition.MIDDLE, 
     content: `<figure class="marker_place" data-id="${FOUND_OBJECTS_TEST[i].id}"><img src="svg/map/ic_cat_${FOUND_OBJECTS_TEST[i].type}.svg"><figcaption class="marker_place_caption">${FOUND_OBJECTS_TEST[i].caption}</figcaption></figure>`, 
    }); 

    markers.push(richMarker); 
} 

如何我還附上一個click事件監聽每個標記,所以,當它會被點擊我會得到這個標記的值data-id值?

編輯 我可以添加event listener像這樣的標記:

// Populate markers array 
for (let i = 0; i < FOUND_OBJECTS_TEST.length; i++) { 
    let richMarker = new RichMarker({ 
      ..... 
     }); 

    google.maps.event.addListener(richMarker, 'click', function(event) { 
     let id = $(this).data('id'); // returns undefined 
     console.log(`clicked on marker ${id}`); 
     console.log(this); 
    }); 

    markers.push(richMarker); 
} 

但我不能得到標記的data-id ...它記錄clicked on marker undefined

+0

此問題已在重複問題中解決:[Google Maps JS API v3 - 簡單多標記示例](http://stackoverflow.com/questions/3059044/google-maps-js-api-v3-簡單多標記示例)與函數閉包。 – geocodezip

回答

1

您可以添加數據ID作爲的屬性,然後使用this檢索它在點擊監聽功能。

// Populate markers array 
for (let i = 0; i < FOUND_OBJECTS_TEST.length; i++) { 
    let richMarker = new RichMarker({ 
    marker_id: FOUND_OBJECTS_TEST[i].id, 
     ..... 
    }); 

    google.maps.event.addListener(richMarker, 'click', function(event) { 
    console.log(`clicked on marker `+ this.marker_id); 
    console.log(this); 
    }); 

    markers.push(richMarker); 
} 
+0

非常感謝!這工作。我不知道我可以將自定義屬性添加到R​​ichMarker類。 – Edgar

0
k = markers.push(richMarker); 

google.maps.event.addListener(markers[k-1], 'click', function (event) { 
        // you code eg: 
        alert('ok'); 
      }); 
+0

謝謝。但是'marker [k-1]'做了什麼?附:請查看更新後的問題。 – Edgar

+1

標記[k-1]是標記數組的內容...是具有偵聽器的對象.. ..每當您在數組中推入一個對象時,都會獲得相關索引..以這種方式,您可以直接關係到這個對象你需要什麼......在你的情況下綁定一個litener到對象.. – scaisEdge