2017-03-18 6 views
1
はol.style.RegularShapeのためのOpenLayersをドキュメントは言う

Openlayers RegularShape半径1と半径2を使って星を生成するにはどうすればよいですか?

radius number | undefined Radius of a regular polygon. 
radius1 number | undefined Inner radius of a star. 
radius2 number | undefined Outer radius of a star. 

私の解釈は、通常のポリゴン(三角形、四角形、五角形、等)のために、私はradiusを使用しますが、どちらかradius1を使うべきではないかということですradius2。そして十分にこれは正常に動作します。

同様に、私はスターのために、私はradiusを使用してはならないことを意味するためにこれを解釈していたと私は両方radius1radius2を使用する必要があることと、そのradius1radius2よりも小さくする必要があります。しかし、これは私が星の部分を見ることができるかなり奇妙なシンボルを作りましたが、正方形のマスクで切り取られたようです。

Openlayersサンプルコードを調べた結果、私が望んだ結果を得るには、radiusradius2を使用して終了しました。radius2は小さい番号です!

javacriptの2つのバージョンは以下のとおりですが、唯一の違いはさまざまなradius(X)パラメータの使用です。

ドキュメントの理解が間違っている(またはドキュメント/実装が壊れている)ようです。

なぜ私の新しいコードが動作するのか知りたいです。だから、どのようにさまざまなradius(X)パラメータが動作するはずです説明してください、私は3つすべての説明を理解するのを助けることができる?

このコードはかなり奇妙なシンボルを生成する正方形マスクによって星cuttオフのようなビット:

good start

:このコードは、正しい星を生成

bad start

new ol.style.Style({ 
    image: new ol.style.RegularShape({ 
     stroke: new ol.style.Stroke({ 
      color: '#333333FF', 
      width: 6.0 
     }), 
     radius1: 24, 
     radius2: 60, 
     points: 5 
    }) 
}) 

new ol.style.Style({ 
    image: new ol.style.RegularShape({ 
     stroke: new ol.style.Stroke({ 
      color: '#333333FF', 
      width: 6.0 
     }), 
     radius: 60, 
     radius2: 24, 
     points: 5 
    }) 
}) 

答えて

1

あなたは正しいです。マニュアルが正しくありません。私はhttps://github.com/openlayers/openlayers/pull/6604を修正して作成しました。

星の外側半径にはradius1またはradius、内側半径にはradius2のいずれかを使用する必要があります。あなたの最初の例がうまくいかない理由は、シンボルサイズがradiusまたはradius1から決定されるためです。それがより小さい半径であるならば、シンボルサイズは星全体に適応しません。

+0

ありがとうございます。非常に高く評価。 –

関連する問題