谷歌地图 - 从函数undefined返回getPosition

时间:2016-04-21 15:18:14

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

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

为什么在第二个函数中我可以提醒(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();
      }
    });
}

1 个答案:

答案 0 :(得分:0)

你刚从匿名回调中回来。您不会将其分配给变量或其他任何内容,并且您的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();
      }
    });
}

当您没有获得成功的地理编码器响应时,您还需要处理此案例。