在地图上怎么绘制这样的线路

0 投票

中间有小段的空白的这种线路

2月 20, 2017 分类:  1833次浏览 | 用户: webtuotuo (4 分)

1个回答

0 投票
不太好弄,铁路的那种效果可以用实线上叠虚线,你这个不好实现

看上去像两条线扭在一起?你们的线数据来源能不能直接给这种形状的线串(闭合)?
2月 20, 2017 用户: 毛瑞 名扬四海 (1,780 分)

如果黑点是你们用来绘制线的数据,可以使用点串正向和反向顺序分别画一条贝塞尔曲线来逼近这种形状
类参考:
http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/apidoc/files/SuperMap/Geometry/LineString-js.html#SuperMap.Geometry.LineString.createBezier2

呃,贝塞尔或者b样条正反向画的东西一样,都正向个一个点画的就类似了
比如第一条线是0 2 4 ...第二条是1 3 5 ...
考虑到闭合:
0和1以及length-1和length-2各加一条贝塞尔
但效果不理想,想要精确拟合只能自己写个方法实现,思路也不复杂,循环数组0到length-1和length-1到0,第一趟计算sin第二趟计算cos。
比如第一趟取第一个点,第二个点可以在数组0,1俩点中点x、y加一个值(加多少自己控制,可以草稿画个三角图,可使用sin函数作为增量),然后取1,然后数组1,2中点x、y加一个值(加多少自己控制,可以草稿画个三角图,可使用sin函数作为增量)...;反过来的循环类似(cos函数),最后得到的点串就组成了你要的图形
(注意,取数组点用geometry.clone()方法克隆点对象保证一个对象在结果点串只被引用一次)
草图:

...