0

同じマーカーにclickhandlerとdblclickhandlerの両方を使用したいという点で、gwt-maps-3.8.0を使用しています。両方を使用すると機能しません。plsは以下の私のコードを参照してください。

`VerticalPanel panel = new VerticalPanel();
GoogleMap mapWidget;
LatLng myLatLng = LatLng.create(13.774252, 80.190262);
        MapOptions myOptions = MapOptions.create();
        myOptions.setZoom(8.0);
        myOptions.setCenter(myLatLng);
        myOptions.setScaleControl(true);
        myOptions.setMapTypeId(MapTypeId.ROADMAP);
        mapWidget = GoogleMap.create(panel.getElement(), myOptions);
Marker marker = Marker.create();
        marker.setMap(mapWidget);
marker.addDblClickListener(new DblClickHandler() {

            @Override
            public void handle(MouseEvent event) {
                Window.alert("Double Click");
            }
        });
        marker.addClickListener(new ClickHandler() {

            @Override
            public void handle(MouseEvent event) {
                Window.alert("Single");
            }
        });`
4

2 に答える 2

1

シングルクリックハンドラー内で非同期呼び出しを呼び出すことで実行しました。これにより、同じマーカーに対してダブルクリックハンドラーが遅延および許可されます。ここでGWTコードを確認してください

于 2013-02-21T07:06:35.070 に答える
1

Click (single) ハンドラが起動されるようです。それが起こっていることですか?

ユーザーがダブルクリックすると、2 回目のクリックが検出される前に、最初のクリックでクリック イベントがトリガーされると思われます。

これについて私が知っている唯一の方法は、ClickHandler 内から 2 回目のクリックを効果的にリッスンすることです。以下は、役に立つ Java の例 (GWT ではない) です: http://blogs.sophiacom.fr/flex/2008/08/double-click.html

これを行うためのよりクリーンな方法を知っている人はいますか?

または、「両方を使用すると機能しない」ということは、マーカーが表示されていないということですか? もしそうなら、これはおそらくマーカーの位置を設定していないためです:

marker.setPosition(myLatLng);
于 2013-02-06T12:03:41.300 に答える