2012-05-23 7 views
0

Я хочу использовать функцию для определения местоположения с помощью GPS и использовать координаты (долготу и широту) для изменения центра карты.Использование координат GPS для изменения центра карты

Вот часть моего кода:

var lat; 
var longi; 

function initialize() { 

    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(onGeoSuccess, onGeoError, { 
      maximumAge: 3000, 
      enableHighAccuracy: true 
     }); 

     function onGeoSuccess(event) { 
      lat = event.coords.latitude; 
      longi = event.coords.longitude; 
      alert(lat + ', ' + longi); 
     } 

     function onGeoError(event) { 
      lat = 50; 
      longi = 150; 
     } 
    } else { 
     lat = 50; 
     longi = 150; 
    }; 

    var array; 
    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 10, 
     center: new google.maps.LatLng(lat, longi), 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     disableDefaultUI: true, 
     zoomControl: true 
    }); 
} 

Проблема заключается в следующем: Оповещение в порядке, он отображает текущую долготу и широту, но карта не появляется это дает лишь небольшой знак вопроса.

Любая помощь применяется.

ответ

3

Вместо с использованием map.setCenter(lat,longi);

Ставка:

map.set('center', new google.maps.LatLng(lat, longi));

2

Вам нужно центрировать карту в onGeoSuccess метода:

Елки всех двигаться map переменной выше:

var lat, longi, map; 

Тогда на onGeoSuccess метод добавления setCenter вызова метода:

function onGeoSuccess(event){ 
    lat=event.coords.latitude; 
    longi=event.coords.longitude; 
    map.setCenter(new google.maps.LatLng(lat, longi)); 
} 

И делать что везде, где вы меняете значения lat, longi, в onGeoError метод t оо.

Кроме того, лучше использовать некоторые значения по умолчанию для lat, longi:

var lat = 50, 
    longi = 150, 
    map; 

и переместить инициализацию карты верхнего (не забудьте удалить var заявление перед map = new google.maps.Map линия):

function initialize() { 

    var array; 
    map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 10, 
     center: new google.maps.LatLng(lat, longi), 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     disableDefaultUI: true, 
     zoomControl: true 
    }); 
// rest of your code 
Смежные вопросы