经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
地图中添加沿线文字标注
来源:cnblogs  作者:Nero8421  时间:2019/10/9 11:04:08  对本文有异议

最近需要实现导航功能,其中路线规划和导航场景如下图所示:

路线规划

导航

上面的截图中,路线上面都绘制出了路名,方便用户查看自己选择的路线都经过了哪些道路。这里用到的地图的能力即为沿线文字标注腾讯地图 Android SDK v4.2.7 已经开放了实现此功能的能力。

主要涉及接口如下:

接口名称 功能概述
PolylineOptions.text(Text text) 置沿 polyline 展示的文字
PolylineOptions.Text.Builder(SegmentText segmentText PolylineOptions.Text 构造器
PolylineOptions.Text.Builder.addSegmentText(SegmentText segmentText) 添加线上展示文字的点串范围
PolylineOptions.Text.Builder.color(int color) 设置文字颜色
PolylineOptions.Text.Builder.strokeColor(int color) 设置文字描边颜色
PolylineOptions.Text.Builder.size(int size) 设置文字尺寸
PolylineOptions.Text.Builder.priority(TextPriority priority) 设置文字优先级

从这个功能涉及到的接口可以看出沿线文字标注是作为 Polyline 的一个属性供用户在添加线的时候展示所需文字。

为一条线添加文字标注

1、选择合适的点串作为文字标注的路径。如下,我们选择了 苏州街-北四环西路辅路-彩和坊路 的一个点串作为 Polyline 绘制的路径。

  1. //这一个点串表示了经 苏州街-北四环-彩和坊路 的一条路线
  2. List<LatLng> points = new ArrayList<>();
  3. //苏州街
  4. points.add(new LatLng(39.982382, 116.305883));
  5. //北四环西路辅路
  6. points.add(new LatLng(39.984914, 116.305690));
  7. //彩和坊路
  8. points.add(new LatLng(39.985045, 116.308136));
  9. points.add(new LatLng(39.983570, 116.308088));
  10. points.add(new LatLng(39.980063, 116.308297));

2、绘制 Polyline 及其文字标注

  1. public Polyline createLineWithText() {
  2. if (mTencentmap == null) {
  3. return null;
  4. }
  5. Polyline polyline = mTencentmap.addPolyline(
  6. new PolylineOptions()
  7. .addAll(points)
  8. .color(0xff54ce4d)
  9. .text(createText()));
  10. return polyline;
  11. }
  12. public PolylineOptions.Text createText() {
  13. List<PolylineOptions.SegmentText> segmentTexts = new ArrayList<>();
  14. //苏州街 的绘制范围是从第0个点开始,第1个点结束
  15. segmentTexts.add(new PolylineOptions.SegmentText(0, 1, "苏州街"));
  16. //北四环西路辅路 的绘制范围是从第1个点开始,第2个点结束
  17. segmentTexts.add(new PolylineOptions.SegmentText(1, 2, "北四环西路辅路"));
  18. //彩和坊路 的绘制范围是从第2个点开始,第4个点结束
  19. segmentTexts.add(new PolylineOptions.SegmentText(2, 4, "彩和坊路"));
  20. return new PolylineOptions.Text.Builder(segmentTexts).build();
  21. }

最终的效果:

沿线文字标注示例

注意事项

在使用这个功能的时候也遇到了一些问题,这里也列举下

  1. PolylineOptions.Text.Builder.priority(TextPriority priority) 设置文字优先级的接口,只有普通和高两个级别,在需要多条线上需要标注文字时,只能有一条线上的文字是 TextPriority.HIGH, 否则多条线重叠时,无法保证优先展示的是用户希望的那条线的文字
  2. 文字是不可变的。当通过 Tencentmap.addPolyline 向地图添加线后,用户通过 PolylineOptions 设置的 PolylineOptions.Text 是不能改变的,如果想改变文字内容只能重新添加一条线并设置 PolylineOptions.Text。

原文链接:http://www.cnblogs.com/Allen-wxk/p/11640119.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号