C# 断线文本的Google算法
我想知道谷歌使用什么样的算法在地图上显示文字(如街道/河流名称等)?特别是我想知道它们是如何渲染折叠的字符串的(例如,卡亨加大道的C# 断线文本的Google算法,c#,algorithm,google-maps,C#,Algorithm,Google Maps,我想知道谷歌使用什么样的算法在地图上显示文字(如街道/河流名称等)?特别是我想知道它们是如何渲染折叠的字符串的(例如,卡亨加大道的N) 我试图查看一下谷歌API,但找不到任何有用的东西…:( 这里有一个猜测(我不知道他们使用什么算法): 我会用一条曲线画街道,这条曲线穿过你称之为“虚线”的所有角点。具体地说,我会尝试使用一条(一条参数曲线,它具有图形的有用属性,例如使用整数运算的简单快速计算和良好的结果).对于文本布局,我会做一些事情来确保文本沿着曲线流动-例如,如上所述。这里有一个猜测(我不知
N
)
我试图查看一下谷歌API
,但找不到任何有用的东西…:(
这里有一个猜测(我不知道他们使用什么算法):
我会用一条曲线画街道,这条曲线穿过你称之为“虚线”的所有角点。具体地说,我会尝试使用一条(一条参数曲线,它具有图形的有用属性,例如使用整数运算的简单快速计算和良好的结果).对于文本布局,我会做一些事情来确保文本沿着曲线流动-例如,如上所述。这里有一个猜测(我不知道他们使用什么算法):
我会用一条曲线画街道,这条曲线穿过你称之为“虚线”的所有角点。具体地说,我会尝试使用一条(一条参数曲线,它具有图形的有用属性,例如使用整数运算的简单快速计算和良好的结果).对于文本布局,我会做一些事情来确保文本沿着曲线流动-例如,如上所述。如果你仔细观察曲线道路上的谷歌地图,你会看到字母接触的地方,以及每个字母似乎有不同坡度的地方
他们的系统在概念上可能很简单,比如画两条平行于道路中心的曲线——间距为一个标准字形高度。然后,如果线条朝字母顶部弯曲,则通过测量顶部线条的一个字母宽度来隔开下一个字母。如果线条向下弯曲,则使用较低的线条。绘制每个字母与结果点处的直线垂直。如果仔细查看弯曲道路上的谷歌地图,您将看到字母接触的地方,以及每个字母似乎具有不同坡度的地方
他们的系统在概念上可能很简单,比如画两条平行于道路中心的曲线——间距为一个标准字形高度。然后,如果线条朝字母顶部弯曲,则通过测量顶部线条的一个字母宽度来隔开下一个字母。如果线条向下弯曲,则使用较低的线条。绘制每个字母垂直于结果点处的直线。简单的方法是沿所需直线以该直线的角度渲染每个图示符。没有那么简单,因为:1.字母可以有10px,10px等于5段(每个2px);2.字母不应该相互重叠。我需要用数千个字符串转换大图层,这就是为什么我需要一个快速算法:(找不到任何东西:/还没有理解你的第1点,你能澄清一点吗?关于第2点-有效的解决方案是检查与上一个glyph(或glpyhs,如果你的直线自相交)的重叠,如果它确实相交,将其向右移动一点(1px),再次检查,直到没有交点。Ad.1.当你有一条线(整条线100px)并且它是一条折线时。每段(子线)的长度为2px。那么你的线由50条(每条2px)组成字体大小是20px,然后你需要分析10段,然后在某处画一个字母。顺便说一句,你的2.解决方案有点贵,但我可以用trygometry来解决这个问题,没有重叠的问题,我只想知道如何尽可能快地将字母放在线上(对于我需要处理的大图层)…:一种简单的方法是沿着所需的线以该线的角度渲染每个图示符。没有那么简单,因为:1.字母可以有10px,10px等于5段(每个2段);2.字母不应该相互重叠。我需要用数千个字符串转换大的层,这就是为什么我需要一个快速算法:(找不到任何内容):/还不了解点1,你能澄清一点吗?关于点2-有效的解决方案是检查与上一个图示符(或glpyhs,如果直线自相交)的重叠,如果它确实相交,将其向右移动一点(1px),再次检查,直到没有交点。Ad.1.当你有一条直线时(整条线100px)这是一条折线。每段(子线)有2倍长。那么你的线由50块组成(每个2倍)字体大小是20px,然后你需要分析10段,然后在某个地方画一个字母。顺便说一句,你的2的解决方案有点贵,但我可以用trygometry来解决这个问题,没有重叠的问题,我只想知道如何尽可能快地将字母放在线上(对于我需要处理的大图层)