从函数

时间:2016-05-28 22:59:05

标签: javascript google-maps google-geocoder

我试图从placeId获取某个地方的纬度和经度,但我不确定如何在地理编码功能中设置地理编码功能之上的变量。目前,函数中的console.log为我提供了有效的lat和long值,第二个console.log给了我0.00。如何设置从0.00开始的纬度和经度变量?

$("#search-filter-form").submit(function(event) {
    // stop form from submitting normally 
    event.preventDefault();

    //get latlong of area:

    var geocoder = new google.maps.Geocoder();
    var address = "new york";
    var placeId = searchFilterViewModel.searchFilterAutoComplete.placeObject.placeId;
    var latitude = 0.00;
    var longitude = 0.00;

    geocoder.geocode( { 'placeId': placeId}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            latitude = results[0].geometry.location.lat();
            longitude = results[0].geometry.location.lng();
            console.log(latitude, longitude);
        } 
    }); 

        console.log(latitude, longitude);
}

2 个答案:

答案 0 :(得分:0)

而不是将匿名func传递给submit方法,而不是将其命名为。

然后你可以定义静态变量。

x = x + xmin;
y = y + ymin;

scatter(x,y)

现在您可以从任何地方访问var

function myfunction() {
    myfunction.something = 123;
}

答案 1 :(得分:0)

虽然重复的答案和上面的答案也可能有效,但这就是我所做的:

  1. 将异步功能移出表单提交并进入一个功能,该功能在设置纬度和经度时立即运行 - 我不想冒险在设置纬度和经度之前提交表单。
  2. 将匿名回调函数转换为箭头回调函数,以便我可以使用"这个"关键字指向异步函数的父级,以便我设置父对象变量而不仅仅是函数变量:

    var geocoder = new google.maps.Geocoder();

                geocoder.geocode( { 'placeId': this.placeObject.placeId}, (results, status) => {
                    if (status == google.maps.GeocoderStatus.OK) {
                        this.placeObject.latitude = results[0].geometry.location.lat();
                        this.placeObject.longitude = results[0].geometry.location.lng();
                    } 
                });