【问题标题】:Wicket, GMap3, Overlay Click event, where did the user click? What is the coordinate (GLatLng)?Wicket,GMap3,Overlay 点击事件,用户点击了哪里?什么是坐标(GLatLng)?
【发布时间】:2014-03-05 11:23:27
【问题描述】:

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

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

        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>

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

【问题讨论】:

    标签: java google-maps wicket wicketstuff


    【解决方案1】:

    设置z-index会解决原来的问题,即圆圈不会阻挡点击地图。

    circle.setZIndex(1);
    

    【讨论】:

      猜你喜欢
      • 2011-08-06
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 2014-05-08
      相关资源
      最近更新 更多