Javascript 谷歌地图地理定位在拖动或单击过程中不断向中心移动
我不明白为什么拖动时地图会居中(到当前位置)。我不确定会发生什么,但我认为这是因为当我拖动/单击时,它会在我的getLocation中循环。这是我的密码 index.htmlJavascript 谷歌地图地理定位在拖动或单击过程中不断向中心移动,javascript,jquery,html,google-maps,geolocation,Javascript,Jquery,Html,Google Maps,Geolocation,我不明白为什么拖动时地图会居中(到当前位置)。我不确定会发生什么,但我认为这是因为当我拖动/单击时,它会在我的getLocation中循环。这是我的密码 index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"&g
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Class Project</title>
<link href="style.css" rel="stylesheet">
</head>
<body>
<script src="script.js"></script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=(MY_API_KEY)"></script>
<div id="map" onclick= "initMap()">Get your Location</div>
</body>
</html>
班级项目
找到你的位置
script.js
function initMap() { //#1
navigator.geolocation.getCurrentPosition(getLocation, errorHandler);
}
function errorHandler(err) {
if(err.code == 1) {
alert("Access to your location denied, refresh page.");
}
else if( err.code == 2) {
alert("Error: Position is unavailable!");
}
}
function getLocation(position){
var msg = {
info: '<strong>Madison Square Garden</strong><br>\
4 Pennsylvania Plaza<br> New York, NY 10001, USA<br>\
<a href="https://www.google.com.au/maps/place/Madison+Square+Garden/@40.7505045,-73.9934387,15z/data=!4m5!3m4!1s0x0:0x33df10e49762f8e4!8m2!3d40.7505045!4d-73.9934387?sa=X&ved=0ahUKEwjNpdHKyN3TAhVJk5QKHdvOCTEQ_BIIjgEwDA">Get Directions</a>',
lat: 40.7505045,
long: -73.9934387
};
var locations = [
[msg.info, msg.lat, msg.long, 0],
];
var latitude = position.coords.latitude,
longitude = position.coords.longitude;
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 17,
center: new google.maps.LatLng(latitude, longitude),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow({});
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function () {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
}
函数initMap(){/#1
navigator.geolocation.getCurrentPosition(getLocation,errorHandler);
}
函数errorHandler(err){
如果(err.code==1){
警报(“拒绝访问您的位置,刷新页面”);
}
else if(err.code==2){
警报(“错误:位置不可用!”);
}
}
函数getLocation(位置){
var msg={
信息:'麦迪逊广场花园
\
美国纽约州纽约市宾夕法尼亚广场4号,邮编:10001\
',
拉脱维亚:40.7505045,
长:-73.9934387
};
变量位置=[
[msg.info,msg.lat,msg.long,0],
];
变量纬度=位置坐标纬度,
经度=position.coords.longitude;
var map=new google.maps.map(document.getElementById('map'){
缩放:17,
中心:新google.maps.LatLng(纬度、经度),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infowindow=new google.maps.infowindow({});
var标记,i;
对于(i=0;i
发生这种情况是因为map rendering div中的onclick=“initMap()”
问题是因为您使用onclick
加载地图。如果拖动地图,将触发onclick
事件,并再次加载地图
您应该使用window.onload=initMap()
来加载映射,或者使用按钮来加载映射onclick
,如下所示
应该是
<button onclick= "initMap()">
Load Map
</button>
<div id="map" >Get your Location</div>
负荷图
找到你的位置
演示感谢您的回答,单击按钮后是否可以删除该按钮?是的,您可以删除该按钮。您可以在脚本src url中看到有
&callback=initMap
。在加载时调用map就足够了