HTML5 геолокация: логика для получения начальной позиции, а также watchLocation? - PullRequest
2 голосов
/ 21 июня 2011

Я использую геолокацию 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 - но затем пользователю, кажется, дважды предлагается указать его местоположение, что выглядит неуклюже.

Есть идеи получше?

Спасибо всем.

UPDATE

Хорошо, похоже, я не объяснил это хорошо. Мой вопрос на самом деле: как мне получить разовое местоположение пользователя из watchPosition, чтобы я мог инициализировать карту один раз?

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Назовите это:

navigator.geolocation.watchPosition

вместо этого:

navigator.geolocation.getCurrentPosition

watchPosition функция также инициализирует позиции.

0 голосов
/ 21 июня 2011

3. Вызовите watchLocation на втором шаге, то есть, чтобы получить исходное местоположение (поэтому пользователю будет предложено только один раз)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...