11

現在、作業中のサイトの「エリアの検索」機能を構築しています。Rightmoveのものと少し似ています。

ポリゴンへのイベントの変更を追跡する機能(新しいポイントの設定と既存のポイントの変更)を除いて、すべてが稼働しています。送信するフォームに座標を投稿できるようにする必要があります。

イベントを編集するためにGoogleCodeのドキュメントを試しました。そして、試してみるたびに、「set_at」が不可能であるか、オブジェクトが定義されていないというメッセージが表示されます。

私が知っているビットが間違っているのは、thePolygon変数が新しいものに渡されていないことだと思います

google.maps.event.addListener(thePolygon, 'set_at', function() {
      // grab paths for infoWindow 
      grabPaths(thePath);
    });

でも理由はわかりません。これはグローバル変数です。またはそうではありませんか?

したがって、問題は、ポリゴンへの変更を追跡して、更新された座標をフォームに渡すにはどうすればよいかということです。

すべての助けは大歓迎です。

これが私が現在持っているコードです:

var mapOptions = {
  // options
};

var map = new google.maps.Map(document.getElementById('map'), mapOptions);

var drawingManager = new google.maps.drawing.DrawingManager({
  drawingMode: google.maps.drawing.OverlayType.POLYGON,
  drawingControl: false,
  polygonOptions: {
    // drawing options
  }
});

drawingManager.setMap(map);
  
google.maps.event.addListener(drawingManager, 'polygoncomplete', function(polygon) {
  // complete functions
});

google.maps.event.addListener(thePolygon, 'set_at', function() {
  // complete functions
});

google.maps.event.addListener(thePolygon, 'insert_at', function() {
  // complete functions
});
4

1 に答える 1

23

これらのイベントはMVCArrayに対して定義されており、ポリラインはMVCArrayではありません。path代わりに、ポリライン(MVCArray)のイベントを監視する必要があります。さらに、まだ作成されていないオブジェクトにリスナーを追加することはできません。ポリゴンは以前は使用できなかっpolygoncompleteたため、polygoncomplete-callback内にリスナーを追加する必要があります。

google.maps.event.addListener(drawingManager,'polygoncomplete',function(polygon) {

  // complete functions

  google.maps.event.addListener(thePath, 'set_at', function() {
    // complete functions
  });

  google.maps.event.addListener(thePath, 'insert_at', function() {
    // complete functions
  });

});
于 2013-02-28T21:26:26.200 に答える