只需使用以下方法将点击事件绑定到标记:
function initialize() {
var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
var mapOptions = {
zoom: 6,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById('map'), mapOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
draggable: true,
title: 'Hello World!',
type: 'point'
});
google.maps.event.addListener(marker, 'click', function() {
// do something. You may use jQuery here.
});
您可以将任意数量的数据添加到标记,例如:
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
draggable: true,
title: 'Hello World!',
type: 'point',
somedata: true
});
然后使用该对象在点击时执行某些操作,例如...
google.maps.event.addListener(marker, 'click', function() {
if (this.somedata) doSomething();
});
此外,如果您要放置多个标记,则可以使用简单的循环将点击事件添加到所有标记。
一个很好的例子是,我有一组 lat/lng 位置,并希望为它们中的每一个放置标记,并让它们中的每一个在点击时执行不同的操作。我可以设置一些数组,一个带有 lat/lng 坐标,第二个带有匹配的标题,比方说,一个存在于页面其他位置的 html 元素(例如,单击它会删除该元素)。
var markers = [],
marker_i = 0,
marker_p = ['-25.363882,131.044922','-25.363882,133.044922'],
marker_t = ['Foo', 'Bar'],
marker_d = ['.foo', '.bar'];
for (var i = 0; i < marker_pos.length; i++) {
markers.push(new google.maps.Marker({
position: marker_p[i],
map: map,
draggable: true,
type: 'point',
title: marker_t[i],
htmlelement: marker_d[i]
});
google.maps.event.addListener(markers[marker_i], 'click', function() {
$(this.htmlelement).remove();
});
marker_i++;
}
希望这可以帮助。