为什么 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);

    });
   }
 });
} 

如果您在浏览器中对此进行测试,您会看到许多日志显示您正在寻找的坐标。