我正在尝试在函数外部的外部作用域中使用position.coords,但是我无法将一个全局var中的值移动到函数作用域外调用。我尝试了许多解决方案,包括窗口变量。在这种情况下,地理定位,新的google.maps.LatLng(iplat,iplong)为空。有人可以采用将position.coords放在函数getLocation范围之外的方法。
function getLocation(position)
{
window.iplat = parseFloat(position.coords.latitude);
window.iplong = parseFloat(position.coords.longitude);
}
function errorFunction(position) {
alert('Error!');
}
var geocoder;
var address;
var userlocation;
var curloc;
google.load("maps",'3',{other_params:'sensor=true'});
google.setOnLoadCallback(function()
{
if (google.loader.ClientLocation)
{
geocoder = new google.maps.Geocoder();
//html5
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(getLocation);
}
else
{
curloc = google.loader.ClientLocation;
iplat=parseFloat(curloc.latitude);
iplong=parseFloat(curloc.longitude);
}
var latlng = new google.maps.LatLng(iplat, iplong);
if (geocoder) {
geocoder.geocode({'latLng': latlng},function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]){
country_code=results[1]....;
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
alert(country_code+":"+iplat+"||"+iplong); <--- NULL VALUES
}
});
答案 0 :(得分:1)
对谷歌api不太熟悉,我猜测你传递的是当时不存在的变量。 navigator.geolocation.getCurrentPosition
接受回调参数(以及google.setOnLoadCallback
)。确保所有需要的变量都向后呈现嵌套事件。
navigator.geolocation.getCurrentPosition(
function(position){
var iplat = parseFloat(position.coords.latitude),
iplong = parseFloat(position.coords.longitude);
alert(country_code+":"+iplat+"||"+iplong); //should work now!
google.load("maps",'3',{other_params:'sensor=true'});
google.setOnLoadCallback(function() { ... } ); // the rest of code
}
);
希望有所帮助。