プログラムでオープンレイヤー3を使用してポリゴンを描画する方法は?
私はjson配列座標を持っています:
[
{
"lng": 106.972534,
"lat": -6.147714
},
{
"lng": 106.972519,
"lat": -6.133398
},
{
"lng": 106.972496,
"lat": -6.105892
}
]
そして今、私はそれを地図上に描きたいのですが、オープンレイヤーを使用します。どうやってするの?
ol.geom.Polygon
コンストラクタを使用する必要があります。そのコンストラクターは、リングの配列を想定しています。各リングは座標の配列です。
あなたの場合これはあなたが多角形を作成する方法です(これはlng
lat
ペアの配列がa
という名前であると仮定します):
// A ring must be closed, that is its last coordinate
// should be the same as its first coordinate.
var ring = [
[a[0].lng, a[0].lat], [a[1].lng, a[1].lat],
[a[2].lng, a[2].lat], [a[0].lng, a[0].lat]
];
// A polygon is an array of rings, the first ring is
// the exterior ring, the others are the interior rings.
// In your case there is one ring only.
var polygon = new ol.geom.Polygon([ring]);
ここで、このポリゴンをWebメルカトル図法(EPSG:3857
)のビューでマップに表示する場合は、ポリゴンをEPSG:4326
からEPSG:3857
に変換する必要があります。
polygon.transform('EPSG:4326', 'EPSG:3857');
また、ポリゴンを実際に表示するには、ポリゴンをフィーチャオブジェクトでラップし、他のレイヤーと同じようにマップに追加するベクターレイヤー(実際にはベクターソース、以下を参照)に追加する必要があります。
// Create feature with polygon.
var feature = new ol.Feature(polygon);
// Create vector source and the feature to it.
var vectorSource = new ol.source.Vector();
vectorSource.addFeature(feature);
// Create vector layer attached to the vector source.
var vectorLayer = new ol.layer.Vector({
source: vectorSource
});
// Add the vector layer to the map.
map.addLayer(vectorLayer);