Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-向变量添加1会生成多个console.log条目_Javascript_Google Maps Api 3 - Fatal编程技术网

Javascript-向变量添加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

我正在使用谷歌地图API来捕获用户单击地图时的缩放级别。然后,我希望将缩放级别提高1,但我在执行此操作时遇到问题,并且在浏览器中运行此操作时,会收到多个console.log条目

下面是有问题的脚本:

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
函数中取出即可。。。