gpt4 book ai didi

java - Wicket、GMap3、Overlay Click事件,用户点击了哪里?坐标 (GLatLng) 是什么?

转载 作者:行者123 更新时间:2023-12-01 13:19:06 25 4
gpt4 key购买 nike

我有一个GCircle在 Wicket 口 GMap3 。我希望用户能够在圈内以及圈外单击 map (添加/删除标记)。问题:据我了解,圆圈上的单击事件不会传播到 map ,因为 GCircle 组件将圆圈作为叠加层添加到 map 上。我想通过从 Circle 事件处理程序调用 map 的点击事件处理程序来解决这个问题。

这里出现了一个奇怪的问题:当圆上发生点击事件时,我无法提取光标下方的纬度/经度。这就是我创建圆并在其上绑定(bind)事件的方式:

        GLatLng center = new GLatLng(47.46133874643204, 19.054965020623058);
LOGGER.debug("Circle center:{}", center);

// settings of the polygon's circle
GCircle circle = new GCircle(center, shapeModelObject.getRadius(), "RED", 3, 1f, "", 0).
setClickable(true).
setEditable(true).
setVisible(true).
setDraggable(true);

circle.addListener(GEvent.click, new GEventHandler() {
@Override
public void onEvent(AjaxRequestTarget target) {
Request request = getRequest();
IRequestParameters params = request.getRequestParameters();
debugParameterValues(params);
String latLng = params.getParameterValue("overlay.latLng").toString();

latLng = latLng.substring(1, latLng.length() - 1);
String[] d = latLng.split(",");
Double lat = Double.valueOf(d[0].trim());
Double lng = Double.valueOf(d[1].trim());
GLatLng gLatLng = new GLatLng(lat, lng);
LOGGER.debug("Click gLatLng:{}", gLatLng);
}
});
map.addOverlay(circle);

这是日志中的圆心:

Circle center:new google.maps.LatLng(47.46133874643204, 19.054965020623058, false)

这就是 Ajax 请求参数的样子/debugParameterValues(params);/:

Parameter name=5-1.IBehaviorListener.1-content-form-map-map, value=
Parameter name=id, value=444
Parameter name=argument0, value=[object Object]
Parameter name=overlay.latLng, value=(47.46133874643204, 19.054965020623058)
Parameter name=overlay.radius, value=500
Parameter name=overlay.overlayId, value=overlay831
Parameter name=overlay.event, value=click
Parameter name=center, value=(47.46096156028599, 19.052862168755382)
Parameter name=bounds, value=((47.45225641835252, 19.03792762896046), (47.46966526106453, 19.067796708550304))
Parameter name=zoom, value=15
Parameter name=currentMapType, value=ROADMAP
Parameter name=_, value=1394015901116

这是LOGGER.debug("Click gLatLng:{}", gLatLng);的结果,与圆心完全相同,无论用户点击哪里:

Click gLatLng:new google.maps.LatLng(47.46133874643204, 19.054965020623058, false)

Wicket 口版本:

    <dependency>
<groupId>org.wicketstuff</groupId>
<artifactId>wicketstuff-gmap3</artifactId>
<version>6.12.0</version>
</dependency>

当点击事件发生在圆上时,如何提取光标下方的纬度/经度?谢谢

最佳答案

设置z-index将解决原来的问题,即圆圈不会遮挡 map 上的点击。

circle.setZIndex(1);

关于java - Wicket、GMap3、Overlay Click事件,用户点击了哪里?坐标 (GLatLng) 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22196307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com