为什么 navigator.getCurrentPosition (function (position) { } ) 不会从 google 地图标记上的点击事件调用
Why does navigator.getCurrentPosition (function (position) { } ) not be called from a click event on a google maps marker
我有一张带有一些标记的 google 地图。
我为特定标记上的 'click' 事件添加了一个事件侦听器。
当用户单击标记时,我想获得从当前位置到标记位置的方向。
为此,我使用以下代码:
marker.addListener('click', function() {
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
gLatitude = position.coords.latitude;
gLongitude = position.coords.longitude;
});
}
更新我的全局变量 gLatitude 和 gLongitude 的两行代码从未执行过。
从 google.maps.Marker 事件中调用 navigator.geolocation.getCurrentPosition 是否有一些限制?
如果是这样,谁能就在 google 地图上单击标记时如何读取当前位置提出建议?
正如我上面所解释的,如果用户未授权访问其地理数据,HTML5 Geolocation
可能会引发隐私问题。但是,由于您想通过点击事件提取坐标,因此您可以通过以下方式改进上面的代码片段:
var map, marker;
function initMap() {
var sidney = {lat: -34.397, lng: 150.644};
map = new google.maps.Map(document.getElementById('map'), {
center: sidney,
zoom: 6
});
marker = new google.maps.Marker({
position: sidney,
map: map
});
marker.addListener('click', function() {
if(navigator.geolocation) {
console.log("true");
var lat = marker.getPosition().lat();
var lng = marker.getPosition().lng();
console.log(lat);
console.log(lng);
});
}
});
}
如果您在浏览器中对此进行测试,您会看到许多日志显示您正在寻找的坐标。
我有一张带有一些标记的 google 地图。
我为特定标记上的 'click' 事件添加了一个事件侦听器。 当用户单击标记时,我想获得从当前位置到标记位置的方向。
为此,我使用以下代码:
marker.addListener('click', function() {
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
gLatitude = position.coords.latitude;
gLongitude = position.coords.longitude;
});
}
更新我的全局变量 gLatitude 和 gLongitude 的两行代码从未执行过。
从 google.maps.Marker 事件中调用 navigator.geolocation.getCurrentPosition 是否有一些限制?
如果是这样,谁能就在 google 地图上单击标记时如何读取当前位置提出建议?
正如我上面所解释的,如果用户未授权访问其地理数据,HTML5 Geolocation
可能会引发隐私问题。但是,由于您想通过点击事件提取坐标,因此您可以通过以下方式改进上面的代码片段:
var map, marker;
function initMap() {
var sidney = {lat: -34.397, lng: 150.644};
map = new google.maps.Map(document.getElementById('map'), {
center: sidney,
zoom: 6
});
marker = new google.maps.Marker({
position: sidney,
map: map
});
marker.addListener('click', function() {
if(navigator.geolocation) {
console.log("true");
var lat = marker.getPosition().lat();
var lng = marker.getPosition().lng();
console.log(lat);
console.log(lng);
});
}
});
}
如果您在浏览器中对此进行测试,您会看到许多日志显示您正在寻找的坐标。