沿着地图上的路径绘制文本(如f.e.街道名称)
问题描述:
我目前正在尝试标记我在地图中绘制的线条(在我的iOS应用中,但我想它适用于所有地图)。沿着地图上的路径绘制文本(如f.e.街道名称)
所以我现在正在做的事情,我简化了我的路径,以便我摆脱大多数小曲线,然后沿着那条线画出我的字形。目前,看起来像这样:
在一个已经确定该行的某些部分。如果线条非常直,角落不是太尖。
但是在某些地方,你什么都读不了......所以有什么策略可以让它看起来更漂亮? 有谁知道算法或就如何使我的路径看起来像红线这里的策略:
我很高兴,关于如何提高我的画:)
答
我的任何想法在我的商业地图渲染系统中,通过找到没有尖角的部分线条来做到这一点。如果标签转角直角或更大,则无法使标签看起来更好。如果没有足够长的时间段,我会缩写标签(例如,Link Road成为Link Rd),或将其分成两行。如果仍然无处可以绘制标签,我不会画它。
另一件很重要的事情是调整间距,使上行和下行不发生冲突,因此在绘制文本时需要查看每个相邻字母对的边界框,并将少量空间添加为必要。
我不打扰我的线条,因为你建议你的红线。这似乎并不重要,至少在街道标签上。
您需要的是使用实际线上的点作为控制点创建的更流畅的[Bezier曲线](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
我用数字更新了我的图纸......所以我想我也必须过滤掉两个向量之间的角度太小的零件。为了摆脱第5,7和9点?然后我可以平滑其余的,对吧?我在这里发现了一个很好的方法:http://merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/ – Georg