Skip to content

路侧停车

本指南:展示路侧停车位并支持高亮与触摸。

功能介绍

OnStreetParkingController 用于在地图上展示 路侧停车位 数据,支持批量添加/移除、单条高亮与触摸交互。数据模型来自 com.telenav.sdk.map.content.model.OnStreetParkingLot

典型流程:

  1. 通过 MapContentManager 查询附近停车位数据。
  2. 调用 addOnStreetParking 渲染到地图。
  3. 用户点击停车位 → OnStreetParkingTouchListener 回调 → highlightOnStreetParking 高亮。

效果示意

路侧停车

获取入口:

1
val parkingCtrl = mapView.getOnStreetParkingController() ?: return

核心接口一览

方法 说明
addOnStreetParking(lots) 添加路侧停车数据
removeOnStreetParking(parkingIds) 按 ID 移除
removeAllOnStreetParking() 移除全部
highlightOnStreetParking(parkingId, isHighlighted) 高亮 / 取消高亮(同时仅一条)

接口详细说明

1. addOnStreetParking — 添加停车位

1
2
3
fun addOnStreetParking(
    onStreetParkingLots: List<OnStreetParkingLot>
)
参数 类型 说明
onStreetParkingLots List<OnStreetParkingLot> 停车位数据列表,通常来自 MapContent 查询

查询数据(MapContentManager)

通过 MapContentManager.createOnStreetParkingQueryTask(location) 查询当前位置周边约 1km × 1km 范围内的停车位。需确保交通数据能力可用。

示例代码

1
2
3
4
5
6
7
val task = MapContentManager.getInstance()
    .createOnStreetParkingQueryTask(currentLocation)

task.runSync { result ->
    val parkingLots = result.getResponse().getResult().orEmpty()
    mapView.getOnStreetParkingController()?.addOnStreetParking(parkingLots)
}


2. removeOnStreetParking — 移除指定停车位

1
2
3
fun removeOnStreetParking(
    parkingIds: List<String>
)
参数 类型 说明
parkingIds List<String> 要移除的停车位 ID 列表

示例代码

1
parkingCtrl.removeOnStreetParking(listOf("lot-001", "lot-002"))


3. removeAllOnStreetParking — 移除全部

接口方法 说明
removeAllOnStreetParking() 清除地图上所有路侧停车位

示例代码

1
parkingCtrl.removeAllOnStreetParking()


4. highlightOnStreetParking — 高亮停车位

同一时间 仅允许一条 停车位处于高亮状态。

1
2
3
4
fun highlightOnStreetParking(
    parkingId: String,
    isHighlighted: Boolean
)

参数 类型 说明
parkingId String 停车位 ID
isHighlighted Boolean true 高亮;false 取消高亮

示例代码

1
2
parkingCtrl.highlightOnStreetParking(parkingId = "lot-001", isHighlighted = true)
parkingCtrl.highlightOnStreetParking("lot-001", isHighlighted = false)


5. 触摸交互 — OnStreetParkingTouchListener

注册 setOnStreetParkingTouchListener 接收停车位点击事件。

1
fun pressEvent(touchedParkings: List<OnStreetParkingLot>)

参数 类型 说明
touchedParkings List<OnStreetParkingLot> 被点击的停车位集合

示例代码

1
2
3
4
5
6
7
8
mapView.setOnStreetParkingTouchListener { touchType, _, touchedParkings ->
    if (touchType == TouchType.Click) {
        touchedParkings.firstOrNull()?.let { parking ->
            parkingCtrl.highlightOnStreetParking(parking.id, true)
            showParkingDetail(parking)
        }
    }
}

详见 触摸与手势

注意事项

  • OnStreetParkingController 须在 MapView.onReady 之后使用。
  • 同一时间仅允许 一个 停车位高亮。
  • 停车位数据由 MapContent 或业务服务提供,本控制器仅负责地图渲染与交互。
  • 若使用 MapContent 查询,需确保交通数据能力可用。

相关指南