0

我正在从现有的 lonlats 中绘制多边形。但它以非常非常小的尺寸显示。代码如下,

for(var i in coordinates) {
  point = new OpenLayers.Geometry.Point(coordinates.lon,coordinates.lat);
  point.transform(new OpenLayers.projection("EPSG:4326"),map.getProjectionObject());
  points.push(point);
}
points.push(points[0]);
var linearRing = new OpenLayers.Geometry.LinearRing(points);
var polygonFeature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([linearRing]),null,{strokeColor:"black",
fillColor:"orange",sides:4});
newLayer.addFeatures([polygonFeature]);
newLayer.redraw(true);

但它以非常非常小的尺寸显示。如何显示更大的尺寸?有什么帮助吗?

4

1 回答 1

1

point.transform() 不会改变point对象本身,它返回 new point,所以:这里也没有i在循环中使用索引(),加上这里是语法错误(new OpenLayers.projection应该是new OpenLayers.Projection

for(var i in coordinates) {
  point = new OpenLayers.Geometry.Point(coordinates[i].lon,coordinates[i].lat);
  points.push(
         point.transform(
             new OpenLayers.Projection("EPSG:4326"),
             map.getProjectionObject()
         )
  );
}
points.push(points[0]);
var linearRing = new OpenLayers.Geometry.LinearRing(points);
var polygonFeature = new OpenLayers.Feature.Vector(
  new OpenLayers.Geometry.Polygon([linearRing]),null,{
    strokeColor:"black", 
    fillColor:"orange",
    });
newLayer.addFeatures([polygonFeature]);
newLayer.redraw(true);

工作示例- 请注意非洲的一个非常大的橙色矩形

于 2012-11-30T06:12:37.960 回答