Я использую геолокацию 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
- но затем пользователю, кажется, дважды предлагается указать его местоположение, что выглядит неуклюже.
Есть идеи получше?
Спасибо всем.
UPDATE
Хорошо, похоже, я не объяснил это хорошо. Мой вопрос на самом деле: как мне получить разовое местоположение пользователя из watchPosition, чтобы я мог инициализировать карту один раз?