无法将谷歌地理编码的返回值存储到全局/外部(javascript)变量(latlng1,在以下情况下)......也许是因为该变量在地理编码完成之前获得了它的值......
对于下面的代码:
alert(('latlon='+latlng1); //shows undefined
但,
alert('got value = '+latLng); //gives the coorect value
那么,如何等待地理编码返回一个非空值,然后再将其分配给变量?
这能解决问题吗?还是代码中还有其他缺陷?
除此之外,代码的所有部分都可以正常工作(如下面代码中的注释所述);我看到标记也正确放置在地图上;
这是我的代码:-
<script src="path_to_javascript_file.js"></script>
$(some_element).click(function() {
var input = document.getElementById(some_input_element).vlaue ;
var get_geocodes = function get_value(latLng) {
alert('got value = '+latLng); //gives the coorect value
if (latLng == null){
geocode(input, get_geocodes)}
return latLng;
}
latlng1 = geocode(input, get_geocodes);
alert('latlon='+latlng1); //says undefined
以下是我的 javascript_file.js(包含在上述代码的开头):
function geocode(query, mycallback) {
var geocoder = new google.maps.Geocoder();
latLng = null
geocoder.geocode( { 'address': query},
function callback(results, status) {
if (status == google.maps.GeocoderStatus.OK && results.length) {
var latLng = results[0].geometry.location;
console.log('geocoding successful : ' + latLng); //gives the correct value
add_marker(latLng, query);
mycallback(latLng);
}
else {
console.log("geocoding unsuccessful because of: " + status);
}
});
}
function add_marker(latLng , query) {
var new_marker = new google.maps.Marker({
position: new google.maps.LatLng(latLng.lat(), latLng.lng()),
map: map,
title: query ,
animation: google.maps.Animation.DROP
});
console.log(new_marker.getPosition().lat()); //gives the correct value
console.log(mew_marker.getPosition().lng()); //gives the correct value
alert('added_marker'+latLng+',,'+location); //gives the correct value
}