2012-03-22 3 views
3

私は編集可能なポリラインを持っており、このポリラインがパス変数をいつ変更するかを知る必要があります。私のポリラインに新しいイベント(「path_change」など)を追加することは可能ですか?ポリラインパス変数の変更時期を知ります

おかげ

よろしく cadetill

答えて

14

私はこの問題に直面していました。私はmvc配列として実装されているポリラインパスにイベントリスナーを追加して解決しました。私はここに文書化され、MVCのアレイイベントを使用: https://developers.google.com/maps/documentation/javascript/reference#MVCArray

あなたのポリラインを設定したら:

var path = poly.getPath(); 
google.maps.event.addListener(path, 'insert_at', function(){ 
alert("path insert_at event"); 
}); 
google.maps.event.addListener(path, 'remove_at', function(){ 
alert("path remove_at event"); 
}); 
google.maps.event.addListener(path, 'set_at', function(){ 
alert("path set_at event"); 
}); 

お役に立てば幸いです。

+0

次のコメントは、このコードを使用すると実際に起こります。ポリゴンのための作品 –

2

私はそれはポリラインオブジェクトにイベントを追加することはできないと思います。 reference編集中にどのようなイベントがトリガされるかわからないけど、「クリック」、「dblclick」などがトリガされていると想定しています。テストを実行して、どのイベントが編集の終了を知らせるかを確認する必要があります。編集前にPolyline.getPath()によって返された配列を保存したと仮定すると、それらが変更されたかどうかを判断するには、新しいgetPath()結果に対してその値をチェックする必要があります。 pathはLatLngオブジェクトの配列なので、基本的なarray.lengthチェックなどと共に、LatLng.equals(LatLng)を使用できます。LatLngArray.join()を使用して2つの配列を比較することができます。

+1

こんにちは。 あなたの答えをありがとう。ポリラインからのすべてのイベントをテストしていますが、パスが変更されたときにイベントがトリガされることはありません。実際には、マウスがポイントの四角形とやり取りして実際の緯度経度を移動したり、新しいパスを作成したりすると、イベントは発生しません。 これは私がパス変更のための新しいイベントを作成することです。 ありがとう – cadetill

関連する問題