本文介绍了OpenLayers - 如何绘制多边形?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不是这样做的正确方法,但OpenLayers仅绘制多边形数组中的最后一个多边形。
I don't is this the right way to do this, but OpenLayers draws only the last polygon from array of polygons.
这是我的代码:对于(...){
var pointList = []; p>
Here is my code:
for (...) {
var pointList = [];
var polygonList = [];
for (...) {
var newPoint = new OpenLayers.Geometry.Point(..X,...Y);
pointList.push(newPoint);
}
var linearRing = new OpenLayers.Geometry.LinearRing(pointList);
var polygons = new OpenLayers.Geometry.Polygon([linearRing]);
polygonList.push(polygons);
}
var style_polygon2 = {
strokeColor: "#05fbff",
strokeOpacity: 1,
strokeWidth: 2,
fillColor: "#05fbff",
fillOpacity: 0.2
};
var multiPol = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPolygon(polygonList), null, style_polygon2);
...layer.addFeatures(multiPol);
请让我知道有人做了这样的事情...
Please let me know if somebody had done something like this...
谢谢!
推荐答案
我已经测试了你的例子,一切都在我的情况下正常工作。请参阅。代码示例:
I've tested your example and all works fine in my case. See LIVE DEMO. Code example:
var options = {
div: "map",
zoom: 13,
center: [-9075004.4955698, 5028040.5259088],
layers: [
new OpenLayers.Layer.OSM()
]
},
source = [
[{x: -9075004, y: 5028040}, {x:-9079132, y: 5025403}, {x: -9072673, y: 5023568}],
[{x: -9074004, y: 5026040}, {x:-9073132, y: 5027403}, {x: -9074673, y: 5026568}],
[{x: -9073004, y: 5027040}, {x:-9072132, y: 5029403}, {x: -9075673, y: 5028568}]
],
polygonList = [],
multuPolygonGeometry,
multiPolygonFeature,
vector = new OpenLayers.Layer.Vector('multiPolygon'),
map = new OpenLayers.Map(options);
for (var i=0; i<source.length; i+=1) {
var pointList = [];
for (var j=0; j<source[i].length; j+=1) {
var point = new OpenLayers.Geometry.Point(source[i][j].x, source[i][j].y);
pointList.push(point);
}
var linearRing = new OpenLayers.Geometry.LinearRing(pointList);
var polygon = new OpenLayers.Geometry.Polygon([linearRing]);
polygonList.push(polygon);
}
multuPolygonGeometry = new OpenLayers.Geometry.MultiPolygon(polygonList);
multiPolygonFeature = new OpenLayers.Feature.Vector(multuPolygonGeometry);
vector.addFeatures(multiPolygonFeature);
map.addLayer(vector);
这篇关于OpenLayers - 如何绘制多边形?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!