繁体   English   中英

Openlayers缩放编辑

[英]Openlayers edit with zoom

我正在使用Openlayers,并且我想修改功能,但是缩放级别17似乎存在问题,因为它在缩放级别16时可以正常工作。

变焦16

在此处输入图片说明

变焦17

在此处输入图片说明

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

有谁能够帮助我?

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

我已经在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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM