我正在尝试使用ajax方法的动态地址构建Google Map。这些是代码:
Controller
var la;
var lo;
var map;
function createMap() {
la= setLatitude();
lo= setLongitude();
var centerCoord = new google.maps.LatLng(la, lo); //dyanmic address through ajax
var mapOptions = {
zoom: 12,
center: centerCoord,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('User-Map'),mapOptions);
function sayHello(){alert('hahahhaha');}
}
function setLatitude(){
$.ajax({
url: 'geo-data',
type: 'POST',
dataType: 'JSON',
success: function (data) {
return data['latitude'];
}
});
}
function setLongitude(){
return 145.008062;
}
然而,它不起作用。在我从ajax获取坐标之前,Google地图始终会初始化地图。
任何人都知道为什么以及如何使用动态地址生成Google地图?
答案 0 :(得分:0)
从成功中调用返回数据['纬度']; 并不意味着它将是 setLatitude 方法的返回值。实际上,您的 setLatitude 没有任何返回值。另一方面,AJAX请求以异步方式运行,这意味着在调用成功回调时,已经调用 createMap 方法, undefined < / strong>作为 la 字段的值。最简单的解决方案是在您的ajax调用中添加 async:false ,如下所示:
function setLatitude(){
var result;
$.ajax({
url: 'geo-data',
async: false,
type: 'POST',
dataType: 'JSON',
success: function (data) {
result = data['latitude'];
}
});
return result;
}
或者将 createMap 方法调用成功回调。