Javascript 如何获取用户的当前位置?

Javascript 如何获取用户的当前位置?,javascript,api,mapbox,mapbox-gl-js,mapbox-gl,Javascript,Api,Mapbox,Mapbox Gl Js,Mapbox Gl,我正在设置一个地图,使商店位置更接近用户的当前位置。但我无法做到这一点。我查阅了文档,但找不到任何关于我的问题的有用信息。我想要的是,如果我点击“查找位置”按钮,它就会显示离我更近的商店 我已经试过放置一个静态的经纬度,效果很好。我希望它是动态的 mapboxgl.accessToken = 'THE_ACCESS_TOKEN'; // This adds the map to your page var map = new mapboxgl.Map({ // container id sp

我正在设置一个地图,使商店位置更接近用户的当前位置。但我无法做到这一点。我查阅了文档,但找不到任何关于我的问题的有用信息。我想要的是,如果我点击“查找位置”按钮,它就会显示离我更近的商店

我已经试过放置一个静态的经纬度,效果很好。我希望它是动态的

mapboxgl.accessToken = 'THE_ACCESS_TOKEN';

// This adds the map to your page

var map = new mapboxgl.Map({
// container id specified in the HTML
  container: 'map',

   // style URL
  style: 'mapbox://styles/mapbox/light-v10',

 // initial position in [lon, lat] format
  center: [78.3430302, 17.449968],

 // initial zoom

 zoom: 14
});

在中间,我需要动态经纬度值(当前位置)。因此,它将向我显示离我的位置更近的商店。

Javascript有一个地理位置API,您可以使用该API而无需导入其他依赖项,它将为您提供用户在纬度和经度方面的位置,您可以查看更多信息

用户必须授予web应用访问其位置的权限。关于如何在代码中获取坐标的快速示例:

if ("geolocation" in navigator) { 
    navigator.geolocation.getCurrentPosition(position => { 
        console.log(position.coords.latitude, position.coords.longitude); 
    }); 
} else { /* geolocation IS NOT available, handle it */ }
更新:将地理位置代码合并到您的代码中会是这样的(检查它是否与纬度、经度或其他方向一致):


其他解决方案也不错,但最简单的方法是使用Mapbox的GeolocateControl插件。这里有一个完整的例子:

初始设置完成后,操作非常简单:

map.addControl(new mapboxgl.GeolocateControl({
  positionOptions: {
    enableHighAccuracy: true
  },
    trackUserLocation: true
}));
if(navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(函数(位置){
var lng=位置坐标经度;
var lat=位置坐标纬度;
mapboxgl.accessToken='pk.eyj1ijoiyw50zwxvdmuxosisimeioijja2d1azl4zmgwy3dvmjuegljmnp6ynprin0.aire0iii2amwywcw5z3cefg';
var map=new mapboxgl.map({
容器:“映射”,
风格:'mapbox://styles/mapbox/streets-v11',
中心:[液化天然气,拉丁美洲],//[液化天然气,拉丁美洲]
缩放:12
});
});
}
body{margin:0;padding:0;}
#映射{位置:绝对;顶部:0;底部:0;宽度:100%;}

查看地理定位API,谢谢您的回复。请让我知道如何在我的上述代码中为中心使用position.coords.latitude和position.coords.longitude值?它应该是[longitude,latitude]顺便说一句。作为一般参考-在这样的公开帖子中包含您的访问令牌通常不是一个好主意。但是在找到用户之后,你如何得到他的坐标呢?
map.addControl(new mapboxgl.GeolocateControl({
  positionOptions: {
    enableHighAccuracy: true
  },
    trackUserLocation: true
}));