Javascript 如何生成动态地址的谷歌地图?

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

我正试图通过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 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(){…}
函数。很抱歉,回复太晚。它确实有用!非常感谢你!