我正在使用HTML地理位置,我想实现以下目标:
1. User arrives at page
2. User is asked to share location
3. When user says yes, Google Maps initialises and centres on their position
4. We add marker to map showing their position
5. (ongoing) As the user moves, the marker continues to move with them
我的实现如下:
// Add a marker
function addMarker(loc) { // adds marker }
function setupMap(loc) { // initialise map and centre on user's position };
setUpMap(???????);
// Start watching user's position
var watchID = navigator.geolocation.watchPosition(addMarker);
所以我的问题是:如何设置初始位置以设置地图?
我可以看到两个选项,两个都有缺陷:
setUpMap
内调用addMarker
,但每次用户移动时地图都会重新初始化,这显然效率低下。 navigator.geolocation.getCurrentPosition
之前致电watchLocation
- 但随后用户似乎会因为他们的位置而被提示两次,这看起来很笨拙。 有更好的想法吗?
谢谢大家。
更新
好的,好像我没有解释得这么好。我的问题是:如何从watchPosition获取用户的位置,作为一次性,以便我可以初始化地图一次?答案 0 :(得分:1)
请致电:
navigator.geolocation.watchPosition
而不是:
navigator.geolocation.getCurrentPosition
watchPosition
函数也初始化位置。
答案 1 :(得分:0)
3. 在第二步中调用watchLocation,即获取初始位置(因此用户只会被提示一次)