Javascript 在google map API v3和MarkerWithLabel上添加多事件侦听器
我想为我的每一个标记添加一个事件,单击该事件可在此事件上居中。我使用lib“MarkerWithLabel”,当我单击一个标记时,地图每次都在最后一个标记上缩放 这是我的密码:Javascript 在google map API v3和MarkerWithLabel上添加多事件侦听器,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我想为我的每一个标记添加一个事件,单击该事件可在此事件上居中。我使用lib“MarkerWithLabel”,当我单击一个标记时,地图每次都在最后一个标记上缩放 这是我的密码: var map = new google.maps.Map(document.getElementById('map-canvas')), bounds = new google.maps.LatLngBounds(), marker = [],
var map = new google.maps.Map(document.getElementById('map-canvas')),
bounds = new google.maps.LatLngBounds(),
marker = [],
grafxUrl = $('#map-canvas').data('grafx'),
image = {
url : grafxUrl + 'universal/icons/pin_locator.png',
size: new google.maps.Size(24, 31),
origin: new google.maps.Point(0,0),
anchor: new google.maps.Point(12, 31)
};
for (var i = 0; i < response.length; i++) {
marker = new MarkerWithLabel({
position: new google.maps.LatLng(response[i].fLatitude, response[i].fLongitude),
map: map,
icon : image ,
title : (i+1)+' '+response[i].sName,
labelContent: (i+1),
labelAnchor: new google.maps.Point(3, 25),
labelClass: "markerNum", // the CSS class for the label
});
google.maps.event.addListener(marker, 'click', function() {
map.setZoom(15);
map.setCenter(marker.position);
});
bounds.extend(marker.position);
//now fit the map to the newly inclusive bounds
map.fitBounds(bounds);
}
var-map=new google.maps.map(document.getElementById('map-canvas'),
bounds=新的google.maps.LatLngBounds(),
标记=[],
grafxUrl=$('#地图画布')。数据('grafx'),
图像={
url:grafxUrl+'universal/icons/pin_locator.png',
尺寸:新谷歌地图尺寸(24,31),
来源:新google.maps.Point(0,0),
主持人:新谷歌地图点(12,31)
};
对于(变量i=0;i
我的剧本怎么了
非常感谢。下面是一个完整的示例,介绍如何扩展边界对象以显示地图上的所有标记
function initialize() {
var southWest = new google.maps.LatLng(40.744656, -74.005966);
var northEast = new google.maps.LatLng(34.052234, -118.243685);
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
var map = new google.maps.Map(document.getElementById("map-canvas"), {
zoom: 12,
center: new google.maps.LatLng(0, 0),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
// Create the bounds object
var bounds = new google.maps.LatLngBounds();
// Create random markers
for (var i = 0; i < 100; i++) {
// Calculate a random position
var position = new google.maps.LatLng(southWest.lat() + latSpan * Math.random(), southWest.lng() + lngSpan * Math.random());
var marker = new google.maps.Marker({
position: position,
map: map
});
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function () {
map.setZoom(5);
map.setCenter(marker.position);
}
})(marker, i));
// Extend the bounds with the last marker position
bounds.extend(position);
}
// Fit map to the extended bounds
map.fitBounds(bounds);
}
initialize();
函数初始化(){
var西南=新google.maps.LatLng(40.744656,-74.005966);
var northEast=新的google.maps.LatLng(34.052234,-118.243685);
var lngSpan=northEast.lng()-soutwest.lng();
var latSpan=northEast.lat()-soutwest.lat();
var map=new google.maps.map(document.getElementById(“地图画布”){
缩放:12,
中心:新google.maps.LatLng(0,0),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
//创建边界对象
var bounds=new google.maps.LatLngBounds();
//创建随机标记
对于(变量i=0;i<100;i++){
//计算一个随机位置
var position=new google.maps.LatLng(soutwest.lat()+latSpan*Math.random(),soutwest.lng()+lngSpan*Math.random());
var marker=new google.maps.marker({
职位:职位,,
地图:地图
});
google.maps.event.addListener(标记,'click',(函数(标记,i){
返回函数(){
map.setZoom(5);
地图设置中心(标记位置);
}
})(marker,i));
//使用最后一个标记位置延伸边界
扩展(位置);
}
//将贴图适配到扩展边界
映射边界(bounds);
}
初始化();
这将在定义的边界(西南/东北坐标)内创建100个随机标记,然后扩展边界对象,最后将地图拟合到此边界对象。查看如何定义标记变量(在for循环内)以及如何调用fitBounds()
(在for循环外)。这同样适用于您的代码
下面是一个工作演示。希望这有帮助
marker
被定义为一个数组,但您将其用作一个简单变量(marker=…
)。我要做的是:var-markers=[]
(注意标记中的s)然后var marker=new marker with label…
然后markers。如果要将每个标记保留在一个数组中以供进一步参考,请按(标记)
。它不会改变任何内容。仍在缩放最后一个标记集:'(它没有改变任何内容…仍在缩放最后一个标记环…我的错。我没有测试该部分。您需要在事件侦听器中对此进行关闭。应答代码和小提琴已更新!