最近需要實作導航功能,其中路線規劃和導航場景如下圖所示:


上面的截圖中,路線上面都繪制出了路名,方便用戶查看自己選擇的路線都經過了哪些道路,這里用到的地圖的能力即為沿線文字標注騰訊地圖 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 繪制的路徑,
//這一個點串表示了經 蘇州街-北四環-彩和坊路 的一條路線
List<LatLng> points = new ArrayList<>();
//蘇州街
points.add(new LatLng(39.982382, 116.305883));
//北四環西路輔路
points.add(new LatLng(39.984914, 116.305690));
//彩和坊路
points.add(new LatLng(39.985045, 116.308136));
points.add(new LatLng(39.983570, 116.308088));
points.add(new LatLng(39.980063, 116.308297));
2、繪制 Polyline 及其文字標注
public Polyline createLineWithText() {
if (mTencentmap == null) {
return null;
}
Polyline polyline = mTencentmap.addPolyline(
new PolylineOptions()
.addAll(points)
.color(0xff54ce4d)
.text(createText()));
return polyline;
}
public PolylineOptions.Text createText() {
List<PolylineOptions.SegmentText> segmentTexts = new ArrayList<>();
//蘇州街 的繪制范圍是從第0個點開始,第1個點結束
segmentTexts.add(new PolylineOptions.SegmentText(0, 1, "蘇州街"));
//北四環西路輔路 的繪制范圍是從第1個點開始,第2個點結束
segmentTexts.add(new PolylineOptions.SegmentText(1, 2, "北四環西路輔路"));
//彩和坊路 的繪制范圍是從第2個點開始,第4個點結束
segmentTexts.add(new PolylineOptions.SegmentText(2, 4, "彩和坊路"));
return new PolylineOptions.Text.Builder(segmentTexts).build();
}
最終的效果:

注意事項
在使用這個功能的時候也遇到了一些問題,這里也列舉下
- PolylineOptions.Text.Builder.priority(TextPriority priority) 設定文字優先級的介面,只有普通和高兩個級別,在需要多條線上需要標注文字時,只能有一條線上的文字是 TextPriority.HIGH, 否則多條線重疊時,無法保證優先展示的是用戶希望的那條線的文字
- 文字是不可變的,當通過 Tencentmap.addPolyline 向地圖添加線后,用戶通過 PolylineOptions 設定的 PolylineOptions.Text 是不能改變的,如果想改變文字內容只能使用 Polyline.setText 介面設定 一個新的 PolylineOptions.Text 物件, 3、如果要移除文字,可以通過 Polyline.setText 介面傳入 null,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/57452.html
標籤:Android
