java百度地图路线规划,公交路线规划

本文介绍了一种基于TransitRouteLine的路线数据渲染方法,通过解析路线步骤(step)、起点(starting)、终点(terminal)等信息,利用MarkerOptions和PolylineOptions创建地图上的覆盖物,实现路线指引的可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**

* 设置路线数据。

*

* @param line 路线数据

*/

public void setData(TransitRouteLine line) {

mRouteLine = line;

}

@Override

public final List getOverlayOptions() {

if (mRouteLine == null) {

return null;

}

List overlayOptionses = new ArrayList();

// step node

if (mRouteLine.getAllStep() != null

&& mRouteLine.getAllStep().size() > 0) {

for (TransitRouteLine.TransitStep step : mRouteLine.getAllStep()) {

Bundle b = new Bundle();

b.putInt("index", mRouteLine.getAllStep().indexOf(step));

if (step.getEntrance() != null) {

overlayOptionses

.add((new MarkerOptions()).position(step.getEntrance().getLocation())

.anchor(0.5f, 0.5f).zIndex(10).extraInfo(b)

.icon(getIconForStep(step)));

}

// 最后路段绘制出口点

if (mRouteLine.getAllStep().indexOf(step) == (mRouteLine

.getAllStep().size() - 1)

&& step.getExit() != null) {

overlayOptionses

.add((new MarkerOptions()).position(step.getExit().getLocation())

.anchor(0.5f, 0.5f).zIndex(10).icon(getIconForStep(step)));

}

}

}

if (mRouteLine.getStarting() != null) {

overlayOptionses

.add((new MarkerOptions()).position(mRouteLine.getStarting().getLocation())

.icon(getStartMarker() != null ? getStartMarker()

: BitmapDescriptorFactory.fromAssetWithDpi("Icon_start.png"))

.zIndex(10));

}

if (mRouteLine.getTerminal() != null) {

overlayOptionses

.add((new MarkerOptions())

.position(mRouteLine.getTerminal().getLocation())

.icon(getTerminalMarker() != null ? getTerminalMarker() :

BitmapDescriptorFactory

.fromAssetWithDpi("Icon_end.png"))

.zIndex(10));

}

// polyline

if (mRouteLine.getAllStep() != null

&& mRouteLine.getAllStep().size() > 0) {

ArrayList textureIndexs = new ArrayList();

List points = new ArrayList();

for (TransitRouteLine.TransitStep step : mRouteLine.getAllStep()) {

if (step.getWayPoints() == null) {

continue;

}

for (int i = 0; i < step.getWayPoints().size(); ++i) {

if (step.getStepType()

!= TransitRouteLine.TransitStep.TransitRouteStepType.WAKLING) {

textureIndexs.add(0);

} else {

textureIndexs.add(1);

}

}

points.addAll(step.getWayPoints());

}

overlayOptionses.add(new PolylineOptions().points(points).width(15).dottedLine(true)

.customTextureList(getCustomTextureList()).textureIndex(textureIndexs)

.zIndex(0));

}

return overlayOtionses;

}

public List getCustomTextureList() {

ArrayList list = new ArrayList();

list.add(BitmapDescriptorFactory.fromAsset("Icon_road_blue_arrow.png"));

list.add(BitmapDescriptorFactory.fromAsset("Icon_road_green_arrow.png"));

return list;

}

复制

深色

复制成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值