2017-09-20 5 views
0

フィーチャーを読み込み、バッファーしてからopenlayers 3マップに追加するには、次の方法があります。ポリゴンのオープンレイヤーをバッファリングする3

操作は正方形と長方形のポリゴンでうまく機能します。しかし、円のような形になると、最終結果は正方形になります。

円のポリゴンに対応するには、この方法を調整するにはどうすればよいですか? ポリゴンに存在するポイントの数を読み取り、次に動的に計算して、バッファされた配列値を生成しますか?

BufferFeatureAlternative(bufferAmount) { 
    let state = this._store.getState(), 
     tmpFeature = state.map.feature.feature_object; 

    let poitnExtent = tmpFeature.getGeometry().getExtent(), 
     bufferedExtent = new ol.extent.buffer(poitnExtent, bufferAmount), 
     bufferPolygon = new ol.geom.Polygon(
      [ 
       [ 
        [bufferedExtent[0], bufferedExtent[1]], 
        [bufferedExtent[0], bufferedExtent[3]], 
        [bufferedExtent[2], bufferedExtent[3]], 
        [bufferedExtent[2], bufferedExtent[1]], 
        [bufferedExtent[0], bufferedExtent[1]] 
       ] 
      ] 
     ), 
     bufferedFeature = new ol.Feature(bufferPolygon); 

    let source = this.vectorSource.getSource(); 
    source.clear(); 
    source.addFeature(bufferedFeature); 
} 

答えて

0

このような操作を行うには、JSTSライブラリを使用する必要があります。

これはバッファラインの公式の例ですが、同様にポリゴンに実装できます。

+0

しかし、プロジェクション '27700'のマップでは動作しないと試行しても、エラーが発生します。 – vicgoyso

+0

あなたの事例を解体するためのフィドルを提供しない限り、あなたを導くことは本当に難しい – pavlos

関連する問題