0

我正在使用 Google maps api,但在尝试获取标记位置时遇到了问题。

我有两个文本字段作为地址输入,并用标记显示结果。

当我想获取标记position(by getPosition() function)时,使用 newgoogle.maps.LatLngBounds()时,标记在地图上的位置是正确的,但是该getPosition()功能给了我一个错误的答案,只有在我第二次搜索地址时getPosition,才会为第一次地址搜索更新.

就像它有一个交易,当我使用时getPosition(),位置还没有更新。

有人知道为什么吗?

谢谢

这是我的代码的一部分。如果我将使用 JSON 请求来获取地址位置,它会更好吗?

function GetAddress(add , map , pointtype) {

    var country = 'france';        

    var address =  add + ', ' + country; 

    geocoder = new google.maps.Geocoder();
      if(pointtype == 0){
        geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {                

          origmarker.setPosition(results[0].geometry.location) ;  
          origmarker.setTitle(add);


        } 
       });
      }
      else{
          geocoder.geocode( { 'address': address}, function(results, status) {
          if (status == google.maps.GeocoderStatus.OK) {              

            desmarker.setPosition(results[0].geometry.location) ;  
            desmarker.setTitle(add);


        } 
       });
      }
}

var bounds = new google.maps.LatLngBounds() ;

bounds.extend(origmarker.getPosition());
bounds.extend(desmarker.getPosition());

map.fitBounds(bounds);
4

1 回答 1

0

听起来您正在使用地理编码器在地图上放置标记。地理编码器是异步的,在回调例程运行之前您不能使用结果。听起来您正在尝试在回调运行之前使用标记的位置(因此您可以从最后一次调用中获取值)。

于 2012-12-05T13:30:24.560 回答