【发布时间】:2018-10-08 14:01:36
【问题描述】:
我想在用户每次点击时获取用户的地理位置。 这是代码
<script type="text/livescript">
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.watchPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";}
}
function showPosition(position) {
// x.innerHTML="Latitude: " + position.coords.latitude +
// "<br>Longitude: " + position.coords.longitude;
var latitude = document.getElementById('latitude');
var longitude = document.getElementById('longitude');
latitude.value=position.coords.latitude;
longitude.value=position.coords.longitude;
}
</script>
使用按钮调用
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×
</button>
<h4 class="modal-title">Check IN Details</h4>
</div>
当我第一次单击该按钮时,浏览器会询问允许位置弹出窗口并呈现纬度/经度,我将它们显示在文本框中。并且会在 URL 中生成一个位置图标,说明该网站正在使用该位置
当我再次单击按钮以获取它挂起的位置时,我的意思是我需要关闭浏览器并单击一个按钮来获取纬度/经度。
在第二种情况下,它无法获取位置。可能有一些刷新功能会清除最后的纬度/经度并根据地点获取新位置。
请帮帮我。
【问题讨论】:
-
请提供正确的minimal reproducible example。现在我们甚至看不到你在哪里调用这些函数。 (不,您在“使用按钮呼叫”下发布的任何内容似乎都没有真正做到这一点。)然后,阅读
geolocation.watchPosition的目的是什么。如果您只想检查点击位置,这可能不是您应该首先使用的方法。 developer.mozilla.org/en-US/docs/Web/API/Geolocation/… 可能更适合。 -
我相信您应该使用 getCurrentLoction 而不是 watchPosition,因为 Geolocation 方法 watchPosition() 方法用于注册一个处理函数,该处理函数将在每次设备位置更改时自动调用。现在,由于您每次单击按钮时都会调用它,因此它会创建另一个导致错误的实例。
标签: javascript geolocation google-geolocation