Javascript 如何生成动态地址的谷歌地图?
我正试图通过ajax方法构建一个带有动态地址的Google地图。这些代码是:Javascript 如何生成动态地址的谷歌地图?,javascript,ajax,google-maps,google-maps-api-3,Javascript,Ajax,Google Maps,Google Maps Api 3,我正试图通过ajax方法构建一个带有动态地址的Google地图。这些代码是: 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 mapOptio
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获取坐标之前初始化地图
有人知道我为什么以及如何生成带有动态地址的谷歌地图吗?调用返回数据['latitude']成功中的strong>并不意味着它将是设置纬度方法的返回值。实际上,您的设置纬度没有任何返回值。另一方面,AJAX请求异步运行,这意味着在调用成功回调时,您的createMap方法已经被调用,其中未定义作为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的调用移动到success回调。是否尝试将
async:'true'
添加到ajax设置中?可以尝试$(document).ajaxComplete(function(){……})代码>而不是createMap(){…}
函数。很抱歉,回复太晚。它确实有用!非常感谢你!