Javascript-向变量添加1会生成多个console.log条目
我正在使用谷歌地图API来捕获用户单击地图时的缩放级别。然后,我希望将缩放级别提高1,但我在执行此操作时遇到问题,并且在浏览器中运行此操作时,会收到多个console.log条目 下面是有问题的脚本:Javascript-向变量添加1会生成多个console.log条目,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我正在使用谷歌地图API来捕获用户单击地图时的缩放级别。然后,我希望将缩放级别提高1,但我在执行此操作时遇到问题,并且在浏览器中运行此操作时,会收到多个console.log条目 下面是有问题的脚本: var-map=null; 函数初始化(){ 变量myOptions={ 缩放:12, scaleControl:对, 街景控制:错误, 中心:新google.maps.LatLng(-28.8413400153.4384050), mapTypeId:google.maps.mapTypeId
var-map=null;
函数初始化(){
变量myOptions={
缩放:12,
scaleControl:对,
街景控制:错误,
中心:新google.maps.LatLng(-28.8413400153.4384050),
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById(“地图画布”),
肌肽);
google.maps.event.addListener(映射,'click',函数(){
infowindow.close();
});
var marker=new google.maps.marker({
位置:new google.maps.LatLng(-28.8413400153.4384050),
地图:地图,
图标:'https://maps.google.com/mapfiles/ms/icons/blue.png',
标题:“”
});
var point=new google.maps.LatLng(-27.7028557153.0120736);
var图标https://maps.google.com/mapfiles/ms/icons/red.png';
var marker=createMarker(点,“Acme Services 2
”,图标)
var point=new google.maps.LatLng(-29.8089498152.8230076);
var图标https://maps.google.com/mapfiles/ms/icons/red.png';
var marker=createMarker(点,“Acme Services 4
”,图标)
var point=new google.maps.LatLng(-26.6564235153.0586826);
var图标https://maps.google.com/mapfiles/ms/icons/red.png';
var marker=createMarker(点,“Acme Services 4
”,图标)
}
var infowindow=new google.maps.infowindow({
尺寸:新谷歌地图尺寸(100,20)
});
函数createMarker(板条、html、图标){
var contentString=html;
var marker=new google.maps.marker({
位置:latlng,
图标:图标,
地图:地图,
zIndex:Math.round(latlng.lat()*-100000)只需将map
事件侦听器移动到createMarker
函数之外
我还修改了:
- 将
infowindow
声明为全局变量,以便可以在两个函数中访问它
- 将2个映射单击事件侦听器合并为一个
var-map=null;
var信息窗口;
函数初始化(){
变量myOptions={
缩放:12,
scaleControl:对,
街景控制:错误,
中心:新google.maps.LatLng(-28.8413400153.4384050),
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=new google.maps.map(document.getElementById(“地图画布”),
肌肽);
infowindow=新建google.maps.infowindow({
尺寸:新谷歌地图尺寸(100,20)
});
google.maps.event.addListener(映射,'click',函数(事件){
infowindow.close();
var latitude=event.latLng.lat();
var longitude=event.latLng.lng();
var Newcenter=纬度+','+经度;
var currentZoomLevel=map.getZoom();
log(“currentZoomLevel:+currentZoomLevel”);
var zoomLevel=parseInt(currentZoomLevel,10)+1;
log(“zoomLevel:+zoomLevel”);
});
google.maps.event.addListener(映射'zoom_changed',函数(){
var zoomLevel=map.getZoom();
console.log(zoomLevel);
});
var marker=new google.maps.marker({
位置:new google.maps.LatLng(-28.8413400153.4384050),
地图:地图,
图标:'https://maps.google.com/mapfiles/ms/icons/blue.png',
标题:“”
});
var point=new google.maps.LatLng(-27.7028557153.0120736);
var图标https://maps.google.com/mapfiles/ms/icons/red.png';
var marker=createMarker(点,“Acme Services 2
”,图标)
var point=new google.maps.LatLng(-29.8089498152.8230076);
var图标https://maps.google.com/mapfiles/ms/icons/red.png';
var marker=createMarker(点,“Acme Services 4
”,图标)
var point=new google.maps.LatLng(-26.6564235153.0586826);
var图标https://maps.google.com/mapfiles/ms/icons/red.png';
var marker=createMarker(点,“Acme Services 4
”,图标)
}
函数createMarker(板条、html、图标){
var contentString=html;
var marker=new google.maps.marker({
位置:latlng,
图标:图标,
地图:地图,
zIndex:Math.round(latlng.lat()*-100000)在哪里调用此代码?是否可能在另一个事件侦听器中调用此代码,从而创建多个侦听器?我不熟悉Google Maps API,但是否可能多次附加事件侦听器(即,在多个位置加载脚本)?调试的一种方法是在脚本主体中执行console.log
。演示也会有所帮助。编辑:^他说的话会在某种程度上影响代码google.maps.event.addListener(映射,“单击”,函数(事件){…})
执行284次…他们所说的^^^:当然,它是这样做的,因为您每次添加标记时都会附加映射事件侦听器。好吧…只要将它从您每次创建标记时调用的createMarker
函数中取出即可。。。