代码之家  ›  专栏  ›  技术社区  ›  Mesh

开层。盘后包含点

  •  0
  • Mesh  · 技术社区  · 16 年前

    我好像碰到了一个错误,或者我忽略了一些东西。

    我编写了一些代码来枚举Openlayers矢量层上的所有矢量特性-检查鼠标是否在矢量特性中-如果是这样,那么它将根据该特性显示一些信息。

    我必须编写自己的方法来实现这一点,因为现有的Openlayers控件(Select等)在鼠标下找到一个功能后停止,并且我有可能将几个功能堆叠在一起。

    我的问题是,.containsPoint方法似乎在使用“pan”之前的coords。 放大或缩小后,几何图形似乎位于正确的位置,当我在地图上挥动鼠标时,containsPoint工作正常。

    在平移地图后是否需要执行某些操作以更新某些内容(要素的几何图形)

    2 回复  |  直到 15 年前
        1
  •  2
  •   Conley Owens    15 年前

    我意识到这个问题已经快到第一个生日了,可能不再有效,但我还是会尝试回答它。

    完成平移后,openlayers.control.dragpan调用地图。如果您检查openlayers.map pan函数,您将看到下面的注释:

    // only call setCenter if not dragging or there has been a change
    

    函数中的以下逻辑反映了此注释。

    所以,是的,每次完成扫视之后,你都需要做如下的事情:

    dragpan.handler.up = function(evt)
    {
        dx = dragpan.handler.last.x - evt.x;
        dy = dragpan.handler.last.y - evt.y;
        var centerPx = map.getViewPortPxFromLonLat(map.getCenter());
        var newCenterPx = centerPx.add(dx, dy);
        var newCenterLonLat = map.getLonLatFromViewPortPx(newCenterPx);
        map.setCenter(map.getCenter() + dragpan.handler.xy);
    }
    

    …事情会神奇地为你工作。

        2
  •  0
  •   milovanderlinden    16 年前

    如果没有示例代码片段,就很难回答这个问题。Openlayers可以通过鼠标单击选择多个对象。你已经试过Openlayers 2.8了吗?

    推荐文章