Maps集成中的Javascript错误

Maps集成中的Javascript错误

我正在尝试使以下代码正常工作(它看起来确实很简单,但是却无法正常工作)

请在这里帮助我:

function findLocationAddress(myLatLng)
    {
        var formattedAddress='MY HOUSE ADDRESS';

        geocoder.geocode({'latLng': myLatLng},function(results, status)
        {
            if (status == google.maps.GeocoderStatus.OK)
            {
                if (results[1])
                {
                    formattedAddress = results[1].formatted_address;
                }
            }
        });

        alert(formattedAddress);
        return formattedAddress;
    }


上面的函数应返回formattedAddress的新值,但仍返回“ MY HOUSE ADDRESS”

任何帮助都非常感谢。

最佳答案

这里的问题是geocoder.geocode请求是异步的,并且您正在同步返回值。尝试这样的事情:

function findLocationAddress(myLatLng)
    {
    var formattedAddress='MY HOUSE ADDRESS';

      geocoder.geocode({'latLng': myLatLng},function(results, status)
      {
        if (status == google.maps.GeocoderStatus.OK)
        {
          if (results[1])
          {
          formattedAddress = results[1].formatted_address;
          alert(formattedAddress);
          // then do what you want (e.g. call a function) here
          // e.g. doMyNextThing(formattedAddress);
          }
        }
      });
    }


上面的代码示例经过测试并可以工作。

如果愿意,您还可以使用回调函数来定义找到地址后发生的情况(这将使该函数更具可重用性)

function findLocationAddress(myLatLng, callback)
    {
    var formattedAddress='MY HOUSE ADDRESS';

      geocoder.geocode({'latLng': myLatLng},function(results, status)
      {
        if (status == google.maps.GeocoderStatus.OK)
        {
          if (results[1])
          {
          formattedAddress = results[1].formatted_address;
          callback(formattedAddress);
          }
        }
      });
    }

findLocationAddress(myLatLng, function(formattedAddress){
  // Do what you want with the result here
});


这可能很明显,但请注意results[1]也会给您第二个结果,因为数组索引从0开始(这可能是预期的行为)

关于javascript - Google Maps集成中的Javascript错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4143049/

10-11 06:43