2017-01-03 4 views
0

現在、マップに描いている線にラベルを付けることを試みています(iOSアプリケーションではすべてのマップに適用されます)。マップ上のパスに沿ってテキストを描く(例:fe. a street-name)

現在私がやっていることは、私はほとんどの小さなカーブを取り除き、そのラインに沿ってグリフを描くようにパスを単純化します。すでに大丈夫ですラインのいくつかの部分に

enter image description here

:現在、それはこのようになります。ラインがまっすぐで、コーナーがあまりにも尖っていない場合。

しかし、いくつかの部分では何も読むことはできません...そのように見えるようにする戦略は何ですか? 誰もがここに赤い線のように見えるアルゴリズムまたは私のパスを作成する方法についての戦略を知っています:

enter image description here

私は私の描画を改善する方法上の任意のアイデアについては満足しています:)

+0

必要なものは、実際の行のポイントをコントロールポイントとして使用して作成された[Bezier Curve](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)です。 [あなたのパスへのカーブの追加](https://developer.apple.com/library/content/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/BezierPaths/BezierPaths.html#//apple_ref/doc/uid/TP40010156-CH11- SW23)セクションを参照して、Core Graphicsパス描画でこれをどのように実行できるかを確認します。 – lukya

+0

私は数字で上記の図面を更新しました...だから、私はまた、2つのベクトルの間の角度が小さすぎる部分を除外しなければならないと思いますか?ポイント5,7、および9を取り除くには?そして残りの部分を滑らかにすることができますよね?私はそれをここでやっていい方法を見つけた:http://merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/ – Georg

答えて

0

私は私のコマーシャルマップレンダリングシステムでは、鋭いコーナーのないラインの一部を見つけることによってそれを行います。角が直角以上になると、ラベルを見栄え良くする方法はありません。セクションが長すぎる場合は、ラベルを省略して(Link RoadがLink Rdになるなど)、または2つの行に分割します。ラベルを描画する場所がまだない場合は、私はそれを描画しません。

もう一つ重要なのは、上昇と下降が競合しないように間隔を調整することです。そのため、テキストを描画する際に隣り合う文字の境界ボックスを見て、必要。

あなたの赤い線で示唆するように、私は自分の線を滑らかにすることはありません。少なくとも路上標識については、実際には問題にはならないと思われる。

関連する問題