使用GPS坐标修改地图的中心

时间:2012-05-23 09:30:13

标签: javascript google-maps gps location

我想使用一个函数来使用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
    });
}

问题是:警报很好,它显示实际的经度和纬度,但地图不显示它只给出一个小问号。

任何帮助都得到了认可。

2 个答案:

答案 0 :(得分:3)

而不是使用map.setCenter(lat,longi);

尝试:

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

答案 1 :(得分: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值,都可以这样做。

最好使用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