HTML5地理定位:获取初始位置和watchLocation的逻辑?

时间:2011-06-21 10:02:21

标签: html html5 geolocation

我正在使用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);

所以我的问题是:如何设置初始位置以设置地图?

我可以看到两个选项,两个都有缺陷:

  1. setUpMap内调用addMarker,但每次用户移动时地图都会重新初始化,这显然效率低下。
  2. 在致电navigator.geolocation.getCurrentPosition之前致电watchLocation - 但随后用户似乎会因为他们的位置而被提示两次,这看起来很笨拙。
  3. 有更好的想法吗?

    谢谢大家。

    更新

    好的,好像我没有解释得这么好。我的问题是:如何从watchPosition获取用户的位置,作为一次性,以便我可以初始化地图一次?

2 个答案:

答案 0 :(得分:1)

请致电:

navigator.geolocation.watchPosition

而不是:

navigator.geolocation.getCurrentPosition

watchPosition函数也初始化位置。

答案 1 :(得分:0)

3. 在第二步中调用watchLocation,即获取初始位置(因此用户只会被提示一次)