Wicket, GMap3, событие Overlay Click, где пользователь щелкнул? Что такое координата (GLatLng)?
У меня есть GCircle на калитке GMap3. Я хочу, чтобы пользователь мог нажимать на карту (добавлять / удалять маркеры) как в круге, так и вне круга. Проблема: событие щелчка на круге не распространяется на карту, насколько я понимаю, потому что компонент GCircle добавляет круг на карту в качестве наложения. Я хочу решить эту проблему, вызвав обработчик события щелчка на карте из обработчика событий Circle.
Здесь возникает странная проблема: я не могу извлечь широту / долготу, которая была ниже курсора, когда произошло событие щелчка по кругу. Вот как я создаю круг и связываю на нем событие:
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)
Версия калитки:
<dependency>
<groupId>org.wicketstuff</groupId>
<artifactId>wicketstuff-gmap3</artifactId>
<version>6.12.0</version>
</dependency>
Как я могу извлечь широту / долготу, которая была ниже курсора, когда произошло событие щелчка по кругу? Спасибо
1 ответ
Установка z-index решит исходную проблему, то есть круг не будет блокировать нажатие на карту.
circle.setZIndex(1);