【发布时间】:2021-06-15 17:44:56
【问题描述】:
我目前正在尝试实现一个谷歌地图,它在 IP 地址来自的地方设置一个 pin。我正在使用 Javascript 中的地理定位工具。
但是,当我对 lat & lng 进行硬编码时,它工作得很好,但是当我尝试获取坐标时,pin 消失了
这是我的有效代码:
<!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<style>
* {
margin: 0;
padding: 0;
}
#map {
height: 500px;
width: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
function initMap(position) {
var location = {lat: 51.165691, lng: 10.451526};
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 4,
center: location
});
var marker = new google.maps.Marker({
position: location,
map: map
});
}
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCFlvIBD_3jTrQgDAyj9RMLOdR9cqYZoco&callback=initMap"></script>
</body>
</html>
这是更改后的代码,不再起作用:
<!DOCTYPE html>
<html>
<head>
<title>Simple Map</title>
<style>
* {
margin: 0;
padding: 0;
}
#map {
height: 500px;
width: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
function initMap(position) {
var location = {lat: 51.165691, lng: 10.451526};
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 4,
center: location
});
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition)
} else {
return "Not available";
}
var a = position.coords.latitude;
var b = position.coords.longitude;
var marker = new google.maps.Marker({
position: {lat: a, lng: b},
map: map
});
}
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCFlvIBD_3jTrQgDAyj9RMLOdR9cqYZoco&callback=initMap"></script>
</body>
</html>
编辑:我被禁止提问,因为我的问题没有被赞成,但得到了回答,并且在 cmets 中进行了一些很好的讨论。但是堆栈交换团队告诉我编辑我的问题以使其更清楚,但他们收到了答案,所以我认为他们很清楚。我不是以英语为母语的人,所以我的英语不是最好的,我无法表达自己那么好。但是他们告诉我编辑它们,使它们看起来像新的并且可以被投票。我不明白为什么这样做是有道理的,但如果我对已经解决的问题获得了一些支持,也许它会解除我的问题禁令,所以如果你不介意,请支持。
【问题讨论】:
-
position.coords.latitude和position.coords.longitude的值是多少? -
是与location变量中的两个数字风格相同的数字
标签: javascript html geolocation