OpenLayers - 如何从现有的lonLat点绘制多边形?

Sco*_*ott 21 openlayers

我在我的数据库中有来自用户定义多边形的经度 - 纬度顶点.我的问题是:如何在地图上重新创建并显示它们?使用Google Maps API非常容易,但我找不到任何有关如何使用OpenLayers执行此操作的文档或示例.有没有人有这方面的经验?

Sco*_*ott 37

经过大量的实验,我发现了如何做到这一点:

var sitePoints = [];
var siteStyle = {
  // style_definition
};

var epsg4326 = new OpenLayers.Projection("EPSG:4326");
for (var i in coordinates) {
  var coord = coordinates[i];
  var point = new OpenLayers.Geometry.Point(coord.lng, coord.lat);
  // transform from WGS 1984 to Spherical Mercator
  point.transform(epsg4326, map.getProjectionObject());
  sitePoints.push(point);
}
sitePoints.push(sitePoints[0]);

var linearRing = new OpenLayers.Geometry.LinearRing(sitePoints);
var geometry = new OpenLayers.Geometry.Polygon([linearRing]);
var polygonFeature = new OpenLayers.Feature.Vector(geometry, null, siteStyle);
vectors.addFeatures([polygonFeature]);
Run Code Online (Sandbox Code Playgroud)

  • 不知道自那以后有多少东西被更新了,但不是行:`site_points.push(site_points [0]);``LinearRing`不是必需的,因为它们会自动关闭? (3认同)