0

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

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

任何帮助都会受到赞赏。

4

2 回答 2

3

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

尝试:

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

于 2012-05-23T09:44:52.740 回答
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
于 2012-05-23T09:35:08.500 回答