这可能是一个蹩脚的问题,但对我来说,作为一个javascript新手,它真的是一个谜。 以下是处理地理位置的代码的简短示例:
if (navigator.geolocation)
{
var latitude, longitude;
navigator.geolocation.getCurrentPosition(
function(position) {
latitude = position.coords.latitude;
longitude = position.coords.longitude;
// Here I get user's coordinates
alert("Latitude : " + latitude + " Longitude : " + longitude);
},
function() {
alert("Geo Location not supported");
}
);
// Here I don't get anything
alert("Latitude : " + latitude + " Longitude : " + longitude);
new google.maps.Geocoder().geocode({
location: new google.maps.LatLng(latitude ,longitude)
}, this.getCallback());
}
else {
error("Geolocation is not supported by this browser.");
}
正如我在评论中已经提到的那样 - 我是第一种情况,我得到了坐标,但在第二种情况下,这些变量的值是undefined
因此我无法得到地图上的位置......可能导致此问题以及如何将这些值传递给地理编码器?
答案 0 :(得分:1)
这就是异步请求的工作方式。您必须等到请求完成,然后执行下一个代码块作为回调成功函数。全部执行它将导致您遇到问题。
function(position) {
latitude = position.coords.latitude;
longitude = position.coords.longitude;
// Here I get user's coordinates
alert("Latitude : " + latitude + " Longitude : " + longitude);
new google.maps.Geocoder().geocode({
location: new google.maps.LatLng(latitude ,longitude)
}, this.getCallback());
}
注意:您可能需要更改this
的上下文,this.callback