2012-05-23 25 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方法Center地圖:

所有的

杉杉移動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 OO。

而且是更好地使用一些默認值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