0

Google マップ API を使用していますが、マーカーの位置を取得しようとしているときに問題が発生しました。

住所入力として 2 つのテキスト フィールドを取得し、結果をマーカーで表示します。

マーカーを取得したい場合position(by getPosition() function)、 new を使用するgoogle.maps.LatLngBounds()と、マーカーの位置は地図上で正しいのですが、getPosition()関数は間違った答えを返しますgetPosition。最初の住所検索で住所を検索するのは 2 回目のみです。 .

ディールがあるみたいで、使ってる時は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 に答える