<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Geocoding service</title>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
function initialize() {
geocoder = new google.maps.Geocoder();
address = "toronto, canada";
geocoder.geocode({
'address': address
}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var lat = results[0].geometry.location.lat();
var lng = results[0].geometry.location.lng();
} else {
var lat = 123;
var lng = 456;
}
document.getElementById('my_place1').value = lat + " - " + lng;
});
document.getElementById('my_place').value = lat + " - " + lng;
}
</script>
</head>
<body onLoad="initialize()">
<input name="" id="my_place" style="width:300px; margin-left:20px;" type="text">
<br>
<input name="" id="my_place1" style="width:300px; margin-left:20px;" type="text">
</body>
</html>
在上面的代码中,my_place1
值有效,但相同的值不适用于my_place。任何人都可以帮助解决这个问题吗?我想在geocoder.geocode
之外做一些具有lat
和lng
价值观的工作。
>你的document.getElementById('my_place').value = lat + " - " + lng ;
在lat
和lang
之前执行,这是异步的概念。
当你想在 geocoder.geocode(
之外使用它时,那么你将不得不在lat
和lang
之后updatdateMyPlace()
调用回调函数
更新
function initialize() {
geocoder = new google.maps.Geocoder();
address = "toronto, canada";
geocoder.geocode({ 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var lat = results[0].geometry.location.lat();
var lng = results[0].geometry.location.lng();
}
else {
var lat = 123;
var lng = 456;
}
document.getElementById('my_place1').value = lat + " - " + lng ;
updatdateMyPlace(lat, lng);
});
function updatdateMyPlace(lat, lng){
document.getElementById('my_place').value = lat + " - " + lng ;
}
}
您在本地限定这些值的范围,这意味着您只能从同一块内访问它们。
if (status == google.maps.GeocoderStatus.OK) {
var lat = results[0].geometry.location.lat();
var lng = results[0].geometry.location.lng();
document.getElementById('my_place1').value = lat + " - " + lng;
} // <--- once you exit this block, the lat/lng no longer exist