我正在使用谷歌地址自动完成api来预填充地址。我在会话中设置地理位置。这工作正常,但对于圆形对象的参数,"位置"我收到一个javascript错误,说位置未定义。我应该怎么解决这个问题?
function geolocate() {
if (navigator.geolocation && !sessionStorage.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
sessionStorage.geolocation = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
});
}
var circle = new google.maps.Circle({
center: sessionStorage.geolocation,
radius: position.coords.accuracy
});
autocomplete.setBounds(circle.getBounds());
}
答案 0 :(得分:0)
这实际上很容易。不知道为什么我以前没想过这个。首先.. sessionStorage只能存储字符串,我传递一个对象。所以1:这是不正确的。 2:位置不在var circle的范围内,因为它是回调函数的参数。解决方案是
function geolocate() {
if (navigator.geolocation && !sessionStorage.geolocation) {
sessionStorage.geolocation = true;
navigator.geolocation.getCurrentPosition(function (position) {
window.geolocation = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
window.o = {
center: window.geolocation,
radius: position.coords.accuracy
}
});
}
var circle = new google.maps.Circle(window.o);
autocomplete.setBounds(circle.getBounds());
}