3

ユーザーが地図上に図形を描画し、名前を付けて領域を記録できる Google Maps API ツールセットを作成しました。各図形が完成すると、名前を付けて、マップにラベルを表示するかどうかなど、いくつかのオプションを設定するよう求められます。

ポイントを配置している間、つまり描画中にポリライン(またはポリゴン)を右クリックしてキャンセルするオプションをユーザーに提供したいと思います。

ドキュメントで読んだ内容に基づいて、ユーザーがマップ上で右クリックしたことを検出できるはずですが、コミットされていないため、描画していたオーバーレイをキャンセルする方法がわかりませんつまり、オブジェクトとして参照することはできません。

何か案は?

解決

次のような解決策を提供してくれた Molle 博士に感謝します。

    ...
    google.maps.event.addListener(_map, "rightclick", function(){
        InitialiseDrawingManager();
    });
}

function InitialiseDrawingManager(){
    if (_drawingManager != null)
        _drawingManager.setMap(null);

    _drawingManager = new google.maps.drawing.DrawingManager();
    _drawingManager.setMap(_map);

    UpdateOverlaySettings();
    ...
4

3 に答える 3

5

( を使用すると仮定google.maps.drawing.DrawingManager)

現在のオーバーレイには、どのような方法でもアクセスできません。できること:

-instanceの-propertyを null にrightclick設定し、新しい-instance を作成します。 mapDrawingManagerDrawingManager

これにより、現在編集されているオーバーレイが削除されます (ただし、既に完成したオーバーレイは削除されません)。

于 2013-08-27T13:38:32.627 に答える
0

Angular 7 の場合、これでうまくいきました。

cancelDrawingShape: boolean = false; // declaration of variable
    @HostListener('document:keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) {
        if (event.key === "Escape" || event.key === "Esc") {
          this.cancelDrawingShape = true;
          this.drawingManager.setDrawingMode(null); // To terminate the drawing, will result in autoclosing of the shape being drawn.
        }
      }

        google.maps.event.addListener(this.drawingManager,"polygoncomplete",
          polygon => {
            if(this.cancelDrawingShape){
              this.selectedShape = polygon;
              this.deleteSelectedShape();
              this.cancelDrawingShape = false;
              return false;
            }else{
               // else part
    }});
于 2020-01-08T07:48:29.833 に答える