在javascript vars中存储值

时间:2014-03-26 17:59:46

标签: javascript google-maps-api-3

这可能是一个蹩脚的问题,但对我来说,作为一个javascript新手,它真的是一个谜。 以下是处理地理位置的代码的简短示例:

  if (navigator.geolocation)
        {
            var latitude, longitude;
            navigator.geolocation.getCurrentPosition(
                    function(position) {
                        latitude = position.coords.latitude;
                        longitude = position.coords.longitude;
                        // Here I get user's coordinates
                        alert("Latitude : " + latitude + " Longitude : " + longitude);

                    },
                    function() {
                        alert("Geo Location not supported");
                    }
            );
            // Here I don't get anything
            alert("Latitude : " + latitude + " Longitude : " + longitude);
            new google.maps.Geocoder().geocode({
                location: new google.maps.LatLng(latitude ,longitude)
            }, this.getCallback());
        }
        else {
            error("Geolocation is not supported by this browser.");
        }

正如我在评论中已经提到的那样 - 我是第一种情况,我得到了坐标,但在第二种情况下,这些变量的值是undefined因此我无法得到地图上的位置......可能导致此问题以及如何将这些值传递给地理编码器?

1 个答案:

答案 0 :(得分:1)

这就是异步请求的工作方式。您必须等到请求完成,然后执行下一个代码块作为回调成功函数。全部执行它将导致您遇到问题。

function(position) {
  latitude = position.coords.latitude;
  longitude = position.coords.longitude;

  // Here I get user's coordinates
  alert("Latitude : " + latitude + " Longitude : " + longitude);

  new google.maps.Geocoder().geocode({
    location: new google.maps.LatLng(latitude ,longitude)
  }, this.getCallback());
}

注意:您可能需要更改this的上下文,this.callback