【问题标题】:Google maps - returning getPosition from function undefined谷歌地图 - 从函数未定义返回 getPosition
【发布时间】:2016-04-21 15:18:14
【问题描述】:

我有一个初始化我的谷歌地图的函数,并且在该函数中它调用另一个函数,该函数与地理编码器一起用于设置一些标记。我在第二个函数中创建标记。

为什么在第二个函数中我可以 alert(marker.getPosition()) 并获得一个 latlng 值。但是,如果我确实返回 marker.getPosition() 然后警告该函数的返回值它显示为未定义?

示例代码:

function initMap() {
    //Defined Map/Geocoder
    //Defined Array of addresses
    for (var i = 0; i < address.length; i++) {
        alert(geocodeAddress(address[i], geocoder, map)); //Alert shows undefined
    }
}
function geocodeAddress(address, geocoder, resultsMap) {
    geocoder.geocode({'address': address}, function(results, status) {
      if (status === google.maps.GeocoderStatus.OK) {
        var marker = new google.maps.Marker({
          map: resultsMap,
          position: results[0].geometry.location
        });
        alert(maker.getPosition()); //Displays latlng data
        return marker.getPosition();
      }
    });
}

【问题讨论】:

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


    【解决方案1】:

    您刚刚从匿名回调中返回。您不会将其分配给变量或其他任何东西,并且您的 geocodeAddress 函数不会将任何内容返回给 initMap 函数。试试:

    function geocodeAddress(address, geocoder, resultsMap) {
        return geocoder.geocode({'address': address}, function(results, status) {
          if (status === google.maps.GeocoderStatus.OK) {
            var marker = new google.maps.Marker({
              map: resultsMap,
              position: results[0].geometry.location
            });
    
            return marker.getPosition();
          }
        });
    }
    

    当您没有获得成功的地理编码器响应时,您还需要处理这种情况。

    【讨论】:

    • 谢谢,这是一个我忽略的简单错误。非常感谢。
    猜你喜欢
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 2018-05-13
    • 2020-09-20
    • 2016-07-25
    相关资源
    最近更新 更多