мобильная геолокация и рендеринг карт safari - PullRequest
0 голосов
/ 05 января 2012

Я пытаюсь определить местоположение пользователей для мобильного веб-приложения, если их браузер не поддерживает геолокацию, а затем отправьте их в местоположение в центре карты по умолчанию. Это хорошо работает на Firefox, но когда я тестирую его на iPhone, он запрашивает использование местоположения, тогда карта не отображается. Однако я заметил, что как только я закрываю сафари и снова открываю его, карта начинает рендериться с геолокацией. Это ошибка в сафари или что-то не так в том, как я инициализирую свою карту?

function init() {
    var center = new google.maps.LatLng(42.283151,-87.955098);  
    if (navigator.geolocation) { 
        navigator.geolocation.getCurrentPosition(function(position) {  

        var loc = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);


        map = new google.maps.Map(document.getElementById('map_canvas'), {
        zoom: 11,
        center: loc,
        mapTypeId: google.maps.MapTypeId.ROADMAP
        });

        new google.maps.Marker({
          position: point,
          map: map
        });
      }); 
  } 
  else {
            map = new google.maps.Map(document.getElementById('map_canvas'), {
        zoom: 15,
        center: center,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });  

  }  
}

1 Ответ

0 голосов
/ 05 января 2012

Вы достаточно долго ждете, пока GPS-навигатор iPhone определит ваше местоположение? Эта первоначальная активация служб определения местоположения может занять некоторое время, чтобы получить точное местоположение для возврата к API, что объясняет, почему последующая загрузка работает как задумано.

Возможно, стоит добавить некоторый код, указывающий на то, что функция геолокации HTML5 работает (возможно, после вызова getCurrentPosition отображается сообщение «Загрузка ...»).

Был бы также целесообразен обратный вызов ошибок, чтобы отлавливать и корректно обрабатывать ошибок , возникающих во время getCurrentPosition. Определенно, вы можете столкнуться со случаями, когда navigator.geolocation имеет значение true, но не вызовет функцию успеха, которую вы определили.

...