【问题标题】:Openlayers edit with zoomOpenlayers 用缩放编辑
【发布时间】:2014-05-02 09:56:32
【问题描述】:

我正在使用 Openlayers,并且我想修改一项功能,但缩放级别 17 似乎存在问题,因为它在缩放级别 16 下完美运行。

放大 16

放大 17

如图所示,在缩放级别 17 时,编辑手柄和多边形不重合。

谁能帮帮我?

【问题讨论】:

  • 您是否有机会在 jsFiddle 中放置一个工作示例,因为无法根据您提供的信息进行诊断。如果您需要使用 jsFiddle 设置 openlayers 的任何帮助,请告诉我。
  • 谢谢回复,抱歉,jsFiddle无法使用
  • 我已经对修改功能代码进行了相当多的工作,其中包含一些巨大的多边形(20,000+ 点),没有看到任何问题。我想帮助你,但没有看到你的例子有效,我无能为力。
  • 我有动态数据,使用 geoserver 和其他应用服务器获取数据,为什么我不能为您提供实时示例,我可以向您展示如何创建地图和 geoserver 功能管理器请求
  • 好的,我明白了,但它必须是关于该多边形和您的缩放级别 17 的特定内容。如果您可以将该多边形保存为 WKT 或 GeoJSON,那么就可以将问题复制到jsFiddle,也许?

标签: javascript openlayers gis


【解决方案1】:

要绕过 Firefox 中 SVG 渲染器的点数限制,您可以做的一件事是在 Polygon 上调用简化。请参阅此处的简化函数 http://trac.osgeo.org/openlayers/browser/trunk/openlayers/lib/OpenLayers/Geometry/LineString.js,它基于 Douglas-Peucker 算法。简化函数将 Linestring 作为参数,因此您必须多次调用简化,直到达到低于 15,000 的数字,然后重新创建多边形。

我已经在 jsFiddle 上放了一个如何做到这一点的例子:http://jsfiddle.net/u6Yfg/

var polygon='POLYGON((x1 y1, x2, y2......xn,yn))'

//convert wkt to OpenLayers.Feature.Vector
var reader=new OpenLayers.Format.WKT();
var feat=reader.read(polygon);

//get initial points from feature's geometry and set target points (eg, 200 here).
var num_points=feat.geometry.components[0].components.length;
var target_points=200;

//set simplification tolerance to one meter initially
var tolerance=1;

//convert feature's geometry to linestring
var linestring=new OpenLayers.Geometry.LineString(feat.geometry.components[0].components);
var simplified_linestring;

//simplify linestring until target points reached
while(target_points<num_points){
    simplified_linestring=linestring.simplify(tolerance);
    num_points=simplified_linestring.components.length;
    tolerance+=1;
}


alert('Number of points in simplified geometry: ' + simplified_linestring.components.length);

//create new geometry from simplified linestring    
var geom=new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(simplified_linestring.components));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多