我正在使用gwt-maps-3.8.0,因为我想同时使用clickhandler和dblclickhandler作为相同的标记。如果我们同时使用它们就行不通..请参考下面的代码..
`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");
}
});`
答案 0 :(得分:1)
看起来会触发Click(单个)处理程序。那是怎么回事?
我怀疑当用户双击时,第一次点击会在检测到第二次点击之前触发点击事件。
我知道的唯一方法就是从ClickHandler中有效地收听第二次点击。这是一个您可能会觉得有用的Java示例(而不是GWT):http://blogs.sophiacom.fr/flex/2008/08/double-click.html
有谁知道更清洁的方法吗?
或者“如果我们同时使用它就不起作用”你是不是意味着标记没有出现? 如果是这样,这可能是因为您没有设置标记位置:
marker.setPosition(myLatLng);
答案 1 :(得分:1)
我在单击处理程序中调用了一些异步调用,延迟并允许双击处理程序用于相同的标记。检查GWT代码Here