DrivingRouteManager.kt 2.97 KB
package cn.feewee.amap3d.map_view.route

import cn.feewee.amap3d.toLatLngList
import cn.feewee.amap3d.toLatLonPoint
import cn.feewee.amap3d.toPx
import com.facebook.react.bridge.ReadableArray
import com.facebook.react.bridge.ReadableMap
import com.facebook.react.uimanager.SimpleViewManager
import com.facebook.react.uimanager.ThemedReactContext
import com.facebook.react.uimanager.annotations.ReactProp

@Suppress("unused")
class DrivingRouteManager : SimpleViewManager<DrivingRoute>() {
    override fun getName(): String {
        return "DrivingRoute"
    }

    override fun createViewInstance(reactContext: ThemedReactContext): DrivingRoute {
        return DrivingRoute(reactContext)
    }

    companion object {
        const val searchRoute = 1
    }

    override fun getCommandsMap(): Map<String, Int> {
        return mapOf("searchRoute" to searchRoute)
    }

    override fun receiveCommand(route: DrivingRoute, commandId: Int, args: ReadableArray?) {
        when (commandId) {
            searchRoute -> route.searchRoute(args)
        }
    }

    @ReactProp(name = "startPoint")
    fun setStart(route: DrivingRoute, startPoint: ReadableMap) {
        route.setStartPoint(startPoint.toLatLonPoint())
    }

    @ReactProp(name = "endPoint")
    fun setEnd(route: DrivingRoute, endPoint: ReadableMap) {
        route.setEndPoint(endPoint.toLatLonPoint())
    }

    @ReactProp(name = "width")
    fun setWidth(route: DrivingRoute, width: Float) {
        route.setRouteWidth(width.toPx().toFloat())
    }

    @ReactProp(name = "lineColor", customType = "Color")
    fun setColor(route: DrivingRoute, lineColor: Int) {
        route.setRoadColor(lineColor)
    }

    @ReactProp(name = "throughPointVisible")
    fun setThroughPointVisible(route: DrivingRoute, throughPointVisible: Boolean) {
        route.setThroughPointMarkerVisible(throughPointVisible)
    }

    @ReactProp(name = "colorFulLine")
    fun setColorFulLine(route: DrivingRoute, colorFulLine: Boolean) {
        route.setIsColorfulline(colorFulLine)
    }

    @ReactProp(name = "throughPointList")
    fun setThroughPointList(route: DrivingRoute, position: ReadableArray) {
        route.setThroughPointList(position.toLatLngList())
    }

    @ReactProp(name = "driveIcon")
    fun setDriveIcon(route: DrivingRoute, driveIcon: ReadableMap?) {
        driveIcon?.let { route.setDriveBit(it) }
    }

    @ReactProp(name = "startIcon")
    fun setStartIcon(route: DrivingRoute, startIcon: ReadableMap?) {
        startIcon?.let { route.setStartBit(it) }
    }

    @ReactProp(name = "endIcon")
    fun setEndIcon(route: DrivingRoute, endIcon: ReadableMap?) {
        endIcon?.let { route.setEndBit(it) }
    }

    @ReactProp(name = "throughPointIcon")
    fun setThroughPointIcon(route: DrivingRoute, throughPoint: ReadableMap?) {
        throughPoint?.let { route.setThroughPointBitDes(it) }
    }

    @ReactProp(name = "roadLine")
    fun setRoadLine(route: DrivingRoute, roadLine: ReadableMap?) {
        roadLine?.let { route.setRoadLine(it) }
    }
}