我想使用一个函数来使用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
});
}
问题是:警报很好,它显示实际的经度和纬度,但地图不显示它只给出一个小问号。
任何帮助都得到了认可。
答案 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