package com.mogo.map import android.util.Pair import com.mogo.eagle.core.data.map.CenterLine import com.mogo.map.utils.ObjectUtils import com.zhidaoauto.map.sdk.open.abs.IResult import com.zhidaoauto.map.sdk.open.data.MapDataApi import com.zhidaoauto.map.sdk.open.query.LonLatPoint import com.zhidaoauto.map.sdk.open.road.RoadRectInfos import com.zhidaoauto.map.sdk.open.routeinfo.RoadInfo /** * 地图数据工具 */ object MapDataWrapper { /** * 获取车道中心线数据 * @param lon 经度 * @param lat 纬度 * @param angle 角度 * @param call 回调 */ fun getCenterLineInfo(lon: Double, lat: Double, angle: Float,call:IResult){ MapDataApi.getCenterLineInfo( lon, lat, angle, object : IResult { override fun result( code: Int, result: com.zhidaoauto.map.sdk.open.road.CenterLine? ) { call.result(0,ObjectUtils.transformCenterLine(result)) } }) } /** * 获取车道限速 * @param lon 经度 * @param lat 纬度 * @param angle 角度 * @param call 回调 */ fun getLimitSpeed(lon: Double, lat: Double, angle: Float,call : IResult) { MapDataApi.getLimitSpeed(lon, lat, angle, object : IResult { override fun result(code: Int, result: RoadInfo?) { call.result(code,result?.speed?:0) } }) } /** * 获取道路角度 * @param lon 经度 * @param lat 纬度 * @param angle 角度 * @param call 回调 */ fun getRoadAngle(lon: Double, lat: Double, angle: Float,call : IResult) { MapDataApi.getRoadRectInfo(lon, lat, angle, object : IResult { override fun result(code: Int, result: RoadRectInfos?) { call.result(code,result?.angle?:0.0) } }) } /** * 按距离获取道路数据 * @param lon 经度 * @param lat 纬度 * @param angle 角度 * @param call 回调 */ fun getCenterLineRangeInfo( lon: Double, lat: Double, angle: Float, distance: Float, call:IResult ) { try { MapDataApi.getCenterLineRangeInfo( lon, lat, angle, distance, object : IResult { override fun result( code: Int, info: com.zhidaoauto.map.sdk.open.road.CenterLine? ) { var ret: com.mogo.map.center.CenterLine? = null if (info != null) { ret = com.mogo.map.center.CenterLine( info.id, info.tile_id, info.road_id, info.lane_id, convert(info.points), info.angle?:0.0 ) } call.result(code,ret) } }) } catch (t: Throwable) { t.printStackTrace() } } private fun convert(points: List?): List> { if (points == null || points.isEmpty()) { return emptyList() } val ret: MutableList> = ArrayList(points.size) for (p in points) { ret.add(Pair.create(p.longitude, p.latitude)) } return ret } }