如何使用动态地址生成Google Map?

时间:2016-01-25 04:15:37

标签: javascript ajax google-maps google-maps-api-3

我正在尝试使用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地图?

1 个答案:

答案 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 方法调用成功回调。