web-dev-qa-db-ja.com

OpenLayers-既存のlonLatポイントからポリゴンを描画するにはどうすればよいですか?

データベースに、ユーザー定義のポリゴンからの経度と緯度の頂点があります。私の質問は、どうすればそれらを再作成して地図に表示できるかということです。これはGoogleMaps APIを使用して行うのは非常に簡単ですが、OpenLayersを使用してこれを行う方法に関するドキュメントや例が見つかりません。誰かがこれをした経験がありますか?

22
Scott

多くの実験の後、私はそれを行う方法を見つけました:

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

let epsg4326 = new OpenLayers.Projection("EPSG:4326");
for (let i in coordinates) {
  let coord = coordinates[i];
  let 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]);

let linearRing = new OpenLayers.Geometry.LinearRing(sitePoints);
let geometry = new OpenLayers.Geometry.Polygon([linearRing]);
let polygonFeature = new OpenLayers.Feature.Vector(geometry, null, siteStyle);
vectors.addFeatures([polygonFeature]);
40
Scott