地图模块适配

This commit is contained in:
jiaguofeng
2023-08-17 16:35:57 +08:00
parent f7a1ebc51b
commit e2bcf69b41
76 changed files with 689 additions and 530 deletions

View File

@@ -66,6 +66,7 @@ dependencies {
implementation 'com.zhidaoauto.map:net:1.0.1'
implementation 'com.zhidaoauto.machine:mapcore:3.0.0.5'
implementation 'com.zhidaoauto.machine:data:1.0.0.1'
}

View File

@@ -7,7 +7,6 @@ import com.zhidaoauto.map.sdk.inner.CompileConfig;
import com.zhidaoauto.map.sdk.inner.road.RoadResultController;
public class MapBox {
private static final String TAG = "MapBox";
static {
System.loadLibrary("map");
}

View File

@@ -1,4 +1,4 @@
//package com.autonavi.nge.dm;
package com.autonavi.nge.dm;//package com.autonavi.nge.dm;
//
//import android.os.RemoteException;
//import android.util.Log;

View File

@@ -1,58 +1,58 @@
//package com.autonavi.nge.guidance
//
//import android.util.Log
//import android.view.View
//import android.widget.ImageView
//import android.widget.LinearLayout
//import android.widget.TextView
//import com.chad.library.adapter.base.BaseQuickAdapter
//import com.chad.library.adapter.base.viewholder.BaseViewHolder
//import com.zhidaoauto.map.sdk.R
//import com.zhidaoauto.map.sdk.inner.CompileConfig
//import java.text.DecimalFormat
//
//class RouteBookAdapter : BaseQuickAdapter<RouteBookItem, BaseViewHolder>(R.layout.routebook_child_item) {
//
// private val TAG = javaClass.simpleName
//
//
// override fun getDefItemCount(): Int {
// return super.getDefItemCount()
// }
//
// override fun convert(helper: BaseViewHolder, item: RouteBookItem) {
// if (CompileConfig.DEBUG) {
// Log.i(TAG, "routebookop--helper.adapterPosition:${helper.adapterPosition}")
// }
// when (helper.adapterPosition) {
// 0 -> {
// helper.getView<LinearLayout>(R.id.routebook_child_item_info_ll).visibility = View.VISIBLE
// helper.getView<ImageView>(R.id.imgView).setImageResource(NaviDirRes.getResID(501))
// helper.getView<TextView>(R.id.orientation).text = "从${item.routeName?:"起点"}出发"
// helper.getView<TextView>(R.id.length).visibility = View.GONE
// }
// else -> {
// helper.getView<TextView>(R.id.orientation).text = item.routeName
// helper.getView<ImageView>(R.id.imgView).setImageResource(NaviDirRes.getResID(item.turnID))
// if (item.routeName == "目的地") {
// helper.getView<TextView>(R.id.length).visibility = View.GONE
// } else {
// helper.getView<TextView>(R.id.length).visibility = View.VISIBLE
// val i = item.routelength
// if (i > 1000) {
// val df = DecimalFormat("#.0")
// val string = df.format(i.toDouble() / 1000)
// val strs = string.split(".")
// if (strs.size >= 2 && strs[1] == "0") {
// helper.getView<TextView>(R.id.length).text = """继续前行${strs[0]}km${item.routeSpeech}""".trimIndent()
// } else {
// helper.getView<TextView>(R.id.length).text = """继续前行${string}km${item.routeSpeech}""".trimIndent()
// }
// } else {
// helper.getView<TextView>(R.id.length).text = """继续前行${i}m${item.routeSpeech}""".trimIndent()
// }
// }
// }
// }
// }
//}
package com.autonavi.nge.guidance
import android.util.Log
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.zhidaoauto.map.sdk.R
import com.zhidaoauto.map.sdk.inner.CompileConfig
import java.text.DecimalFormat
class RouteBookAdapter : BaseQuickAdapter<RouteBookItem, BaseViewHolder>(R.layout.routebook_child_item) {
private val TAG = javaClass.simpleName
override fun getDefItemCount(): Int {
return super.getDefItemCount()
}
override fun convert(helper: BaseViewHolder, item: RouteBookItem) {
if (CompileConfig.DEBUG) {
Log.i(TAG, "routebookop--helper.adapterPosition:${helper.adapterPosition}")
}
when (helper.adapterPosition) {
0 -> {
helper.getView<LinearLayout>(R.id.routebook_child_item_info_ll).visibility = View.VISIBLE
helper.getView<ImageView>(R.id.imgView).setImageResource(NaviDirRes.getResID(501))
helper.getView<TextView>(R.id.orientation).text = "${item.routeName?:"起点"}出发"
helper.getView<TextView>(R.id.length).visibility = View.GONE
}
else -> {
helper.getView<TextView>(R.id.orientation).text = item.routeName
helper.getView<ImageView>(R.id.imgView).setImageResource(NaviDirRes.getResID(item.turnID))
if (item.routeName == "目的地") {
helper.getView<TextView>(R.id.length).visibility = View.GONE
} else {
helper.getView<TextView>(R.id.length).visibility = View.VISIBLE
val i = item.routelength
if (i > 1000) {
val df = DecimalFormat("#.0")
val string = df.format(i.toDouble() / 1000)
val strs = string.split(".")
if (strs.size >= 2 && strs[1] == "0") {
helper.getView<TextView>(R.id.length).text = """继续前行${strs[0]}km${item.routeSpeech}""".trimIndent()
} else {
helper.getView<TextView>(R.id.length).text = """继续前行${string}km${item.routeSpeech}""".trimIndent()
}
} else {
helper.getView<TextView>(R.id.length).text = """继续前行${i}m${item.routeSpeech}""".trimIndent()
}
}
}
}
}
}

View File

@@ -16,6 +16,7 @@ import android.view.MotionEvent
import android.view.SurfaceHolder
import android.view.View
import com.alibaba.fastjson.JSON
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.CompileConfig.DEBUG
import com.zhidaoauto.map.sdk.inner.abs.IEventController
@@ -34,7 +35,6 @@ import com.zhidaoauto.map.sdk.open.abs.view.IMapStyleParams
import com.zhidaoauto.map.sdk.open.marker.Marker
import com.zhidaoauto.map.sdk.open.marker.MarkerInfo
import com.zhidaoauto.map.sdk.open.marker.MarkerOptions
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.tools.MapTools
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -216,7 +216,7 @@ class MapView(context: Context, private val mMapStyleParams: IMapStyleParams, pr
override fun toScreen() {
isScreen = true
isScreen.set(true)
}
override fun setVrMode(isVr: Boolean) {
@@ -606,7 +606,7 @@ class MapView(context: Context, private val mMapStyleParams: IMapStyleParams, pr
}
var snapshotBitmap: Bitmap? = null
var isScreen = false
var isScreen:AtomicBoolean = AtomicBoolean()
private var doubles = doubleArrayOf()
open fun getDoubles(): DoubleArray {
@@ -655,8 +655,8 @@ class MapView(context: Context, private val mMapStyleParams: IMapStyleParams, pr
msg.what = RENDER_CHANGE
msg.arg1 = (System.currentTimeMillis()-time).toInt()
mHandler.sendMessage(msg)
if (isScreen) {
isScreen = false
if (isScreen.get()) {
isScreen.set(false)
snapshotBitmap = createBitmapFromGLSurface(0, 0, width, height, gl)
mEventController?.dispatchScreenShotListener(snapshotBitmap)
}
@@ -897,7 +897,9 @@ class MapView(context: Context, private val mMapStyleParams: IMapStyleParams, pr
val markerInfo = jsonToObj(resultInfo)
if (markerInfo != null) {
var marker: Marker = Marker(MarkerOptions(markerInfo.id,null).setGps(true).position(LonLatPoint(markerInfo.lon, markerInfo.lat)).setAssInfo(markerInfo.assInfo),mMapController,mMarkerCall)
var marker: Marker = Marker(MarkerOptions(markerInfo.id,null).setGps(true).position(
LonLatPoint(markerInfo.lon, markerInfo.lat)
).setAssInfo(markerInfo.assInfo),mMapController,mMarkerCall)
lastClickMarker?.let {
if (!TextUtils.equals(it.getId(), marker.getId())) {
it.hideInfoWindow()

View File

@@ -3,6 +3,9 @@ package com.zhidaoauto.map.sdk.inner.abs
import android.graphics.Bitmap
import android.view.MotionEvent
import com.autonavi.nge.map.OnMapScreenShotListener
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.data.road.RoadCross
import com.zhidaoauto.map.data.road.StopLine
import com.zhidaoauto.map.sdk.open.abs.MapStatusListener
import com.zhidaoauto.map.sdk.open.abs.OnCameraChangeListener
import com.zhidaoauto.map.sdk.open.abs.OnHdDataDownByCityListener
@@ -21,17 +24,10 @@ import com.zhidaoauto.map.sdk.open.camera.CameraPosition
import com.zhidaoauto.map.sdk.open.location.MogoLocation
import com.zhidaoauto.map.sdk.open.marker.Marker
import com.zhidaoauto.map.sdk.open.marker.OnMarkClickListener
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.road.RoadCross
import com.zhidaoauto.map.sdk.open.road.StopLine
interface IEventController {
fun exit()
fun addHdDataDownListener(id: Int, onHdDataDownByCityListener: OnHdDataDownByCityListener)
fun removeHdDataDownListener(id: Int)
fun dispatchHdDataDownListener(id: Int, progress: Double)
fun dispatchHdDataDownStateListener(id: Int, state: Int)
fun addCameraChangeListener(cameraChangeListener: OnCameraChangeListener)
fun removeCameraChangeListener(cameraChangeListener: OnCameraChangeListener)
fun dispatchCameraChangeListener(type: Int, value: Int)

View File

@@ -1,6 +1,6 @@
package com.zhidaoauto.map.sdk.inner.abs
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
interface ILockLocation {
fun setLockCar(lock: Boolean)

View File

@@ -1,9 +1,9 @@
package com.zhidaoauto.map.sdk.inner.abs
import com.autonavi.nge.map.LonLat
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
interface ILonLatProxy {
open fun switchLonLat(lonLat: LonLat):LonLatPoint
open fun switchLonLat(lonLat: LonLat): LonLatPoint
open fun switchLonLat(lonLatPoint: LonLatPoint):LonLat
}

View File

@@ -6,6 +6,7 @@ import android.view.View
import com.autonavi.nge.map.LonLat
import com.autonavi.nge.map.OnMapScreenShotListener
import com.autonavi.nge.map.Pixels
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.element.MapCoordinate
import com.zhidaoauto.map.sdk.inner.use.Clerk
import com.zhidaoauto.map.sdk.open.abs.OnHdDataDownByCityListener
@@ -16,7 +17,6 @@ import com.zhidaoauto.map.sdk.open.deadzone.DeadZone
import com.zhidaoauto.map.sdk.open.deadzone.DeadZoneOptions
import com.zhidaoauto.map.sdk.open.poyline.Polyline
import com.zhidaoauto.map.sdk.open.poyline.PolylineOptions
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.weather.WeatherResult
import kotlinx.coroutines.CoroutineScope
@@ -185,9 +185,6 @@ interface IMapController {
fun clearAllPrimitives(): Boolean
fun drawDeadZone(strJsonOption: String)
fun setDeadZoneVisible(b: Boolean)
fun cacheHDDataByCity(id: Int, listener: OnHdDataDownByCityListener)
fun cacheHDDataByCityLonLat(lon: Double, lat: Double, listener: OnHdDataDownByCityListener)
fun cancelCacheHDData()
/**
* 锚点 更新锚点属性

View File

@@ -3,11 +3,13 @@ package com.zhidaoauto.map.sdk.inner.controller
import android.graphics.Bitmap
import android.view.MotionEvent
import com.autonavi.nge.map.OnMapScreenShotListener
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.data.road.RoadCross
import com.zhidaoauto.map.data.road.StopLine
import com.zhidaoauto.map.sdk.inner.abs.IEventController
import com.zhidaoauto.map.sdk.open.MapAutoApi
import com.zhidaoauto.map.sdk.open.abs.MapStatusListener
import com.zhidaoauto.map.sdk.open.abs.OnCameraChangeListener
import com.zhidaoauto.map.sdk.open.abs.OnHdDataDownByCityListener
import com.zhidaoauto.map.sdk.open.abs.OnMapChangeListener
import com.zhidaoauto.map.sdk.open.abs.OnMapClickListener
import com.zhidaoauto.map.sdk.open.abs.OnMapLoadedListener
@@ -23,9 +25,6 @@ import com.zhidaoauto.map.sdk.open.camera.CameraPosition
import com.zhidaoauto.map.sdk.open.location.MogoLocation
import com.zhidaoauto.map.sdk.open.marker.Marker
import com.zhidaoauto.map.sdk.open.marker.OnMarkClickListener
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.road.RoadCross
import com.zhidaoauto.map.sdk.open.road.StopLine
class MapEventController(): IEventController {
@@ -46,7 +45,6 @@ class MapEventController(): IEventController {
private var renderListenerList : ArrayList<OnRenderListener>? = null
private var mRoadInfoListenerList : ArrayList<OnRoadInfoListener>? = null
private var mLogListenerList : ArrayList<ILog>? = null
private var mHdDataDownloadListener: HashMap<Int, OnHdDataDownByCityListener>? = null
private var mRoamStatusListenerList: ArrayList<OnRoamStatusListener>? = null
@@ -85,47 +83,10 @@ class MapEventController(): IEventController {
renderListenerList = null
mLogListenerList?.clear()
mLogListenerList = null
mHdDataDownloadListener?.clear()
mHdDataDownloadListener = null
mRoamStatusListenerList?.clear()
mRoamStatusListenerList = null
}
override fun addHdDataDownListener(id: Int, onHdDataDownByCityListener: OnHdDataDownByCityListener){
if(mHdDataDownloadListener == null){
mHdDataDownloadListener = HashMap()
}
if(!mHdDataDownloadListener!!.keys.contains(id)) {
mHdDataDownloadListener?.put(id, onHdDataDownByCityListener)
}
}
override fun removeHdDataDownListener(id: Int){
mHdDataDownloadListener?.let {
if(it.keys.contains(id)) {
it.remove(id)
}
}
}
override fun dispatchHdDataDownListener(id: Int, progress: Double){
mHdDataDownloadListener?.let {
for(listener in it.values){
listener.onMapHDDataCacheProgressByCity(id,progress)
}
}
}
override fun dispatchHdDataDownStateListener(id: Int, state: Int){
mHdDataDownloadListener?.let {
for(listener in it.values){
listener.onMapHDDataCacheStateByCity(id,state)
}
}
}
override fun addCameraChangeListener(cameraChangeListener: OnCameraChangeListener){
if(mCameraChangeListenerList == null){
mCameraChangeListenerList = ArrayList()

View File

@@ -9,10 +9,12 @@ import com.zhidaoauto.map.sdk.inner.abs.ILocationView
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.inner.abs.IMarkerController
import com.zhidaoauto.map.sdk.open.MapAutoApi
import com.zhidaoauto.map.sdk.open.abs.view.IMapStyleParams
import com.zhidaoauto.map.sdk.open.location.MyLocationStyle
import io.netty.util.internal.StringUtil
class LocationHelper(private var mContext: Context?, private var mMarkerController: IMarkerController?, private var mMapController: IMapController?):ILocationView {
class LocationHelper(private var mContext: Context?, private var mMarkerController: IMarkerController?,
private var mMapController: IMapController?, private var mMapStyleParams: IMapStyleParams?):ILocationView {
private val TAG = "LocationHelper"
private var myLocationEnabled: Boolean = false
@@ -22,7 +24,7 @@ class LocationHelper(private var mContext: Context?, private var mMarkerControll
if (CompileConfig.DEBUG) {
Log.i(TAG, "selfop---markerop-LocationHelper constructor")
}
myLocationStyle = MyLocationStyle(mContext, mMarkerController, mMapController)
myLocationStyle = MyLocationStyle(mContext, mMarkerController, mMapController,mMapStyleParams)
val mMapStyle = mMapController?.getMapStyleParams()?.getStyleMode()?:MapAutoApi.MAP_STYLE_NIGHT
switch(mMapStyle)

View File

@@ -1,10 +1,10 @@
package com.zhidaoauto.map.sdk.inner.map
import android.graphics.Point
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.open.camera.CameraPosition
import com.zhidaoauto.map.sdk.open.camera.LatLngBounds
import com.zhidaoauto.map.sdk.open.camera.MapCameraMessage
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
class MapCameraMessageImpl private constructor() : MapCameraMessage() {
/* private var a: Float = 0.toFloat()

View File

@@ -10,6 +10,8 @@ import com.alibaba.fastjson.JSON
import com.autonavi.nge.map.LonLat
import com.autonavi.nge.map.OnMapScreenShotListener
import com.autonavi.nge.map.Pixels
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.data.road.CenterLine
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.CompileConfig.DEBUG
import com.zhidaoauto.map.sdk.inner.abs.IEventController
@@ -33,7 +35,6 @@ import com.zhidaoauto.map.sdk.inner.utils.MathUtils
import com.zhidaoauto.map.sdk.inner.utils.TransformUtils
import com.zhidaoauto.map.sdk.open.MapAutoApi
import com.zhidaoauto.map.sdk.open.abs.IResult
import com.zhidaoauto.map.sdk.open.abs.OnHdDataDownByCityListener
import com.zhidaoauto.map.sdk.open.abs.view.IMapStyleParams
import com.zhidaoauto.map.sdk.open.circle.CircleController
import com.zhidaoauto.map.sdk.open.circle.CircleOptions
@@ -41,8 +42,6 @@ import com.zhidaoauto.map.sdk.open.deadzone.DeadZone
import com.zhidaoauto.map.sdk.open.deadzone.DeadZoneOptions
import com.zhidaoauto.map.sdk.open.poyline.Polyline
import com.zhidaoauto.map.sdk.open.poyline.PolylineOptions
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.road.CenterLine
import com.zhidaoauto.map.sdk.open.tools.MapTools
import com.zhidaoauto.map.sdk.open.weather.WeatherModel
import com.zhidaoauto.map.sdk.open.weather.WeatherResult
@@ -80,8 +79,9 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
private var roadLeaveLineJob: Job? = null
private var roadLineTimeJob: Job? = null
private var roamJob: Job? = null
private var cacheHdDataProgressJob: Job? = null
private var transJob: Job? = null
private var zoomJob: Job? = null
private var styleJob: Job? = null
private var destLonLatPoint: LonLatPoint? = null
private var destAngle = 0f
private var angle = 0f
@@ -602,7 +602,7 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
//旋转角度变化的时候
@Synchronized override fun dispatchRotationAngleChanged(rotateAngle: Float) {
override fun dispatchRotationAngleChanged(rotateAngle: Float) {
// val listeners = mMapView.getM_RotateListenerList()
// if (listeners != null && listeners.size > 0) {
// for (lis in listeners) {
@@ -614,7 +614,7 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
}
//焦点变化时的事件
@Synchronized override fun dispatchFocusChanged() {
override fun dispatchFocusChanged() {
// val listeners = mMapView.getM_FocusListenerList()
// if (listeners != null && listeners.size > 0) {
// for (lis in listeners) {
@@ -626,7 +626,7 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
}
@Synchronized override fun dispatchZoomChanged() {
override fun dispatchZoomChanged() {
setMarkerScale()
val currentZoom = getZoom()
if (DEBUG) {
@@ -642,7 +642,7 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
mEventController?.dispatchMapStatusListener(LISTENER_TYPE_ZOOM, currentZoom)
mEventController?.dispatchCameraChangeListener(LISTENER_TYPE_ZOOM, currentZoom)
if (DEBUG) {
Log.d(TAG, "styleop--dispatchZoomChanged: currentZoom:${currentZoom}, isSetMapStyle: ${isSetMapStyle}")
Log.d(TAG, "styleop--dispatchZoomChanged: currentZoom:${currentZoom}, ${mMapView.getMapEngine().getZoomValue()}, isSetMapStyle: ${isSetMapStyle}, ${getMapStyle()}")
}
if(getMapStyle() >= 5 && currentZoom >= 19){
isSetMapStyle = false
@@ -660,32 +660,35 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
}
private fun setMarkerScale(){
var currentZoomVal = mMapView.getMapEngine().getZoomValue()
if (DEBUG) {
Log.d(TAG, "dispatchZoomChanged--currentZoomVal: ${currentZoomVal}")
}
var scale = 0.1f
if (currentZoomVal >= 0.125 && currentZoomVal < 0.25) {
scale = currentZoomVal * (-28f) + 11f
} else if (currentZoomVal >= 0.25 && currentZoomVal < 0.5) {
scale = currentZoomVal * (-7.2f) + 5.8f
} else if (currentZoomVal >= 0.5 && currentZoomVal < 1) {
scale = currentZoomVal * (-2f) + 3.2f
} else if (currentZoomVal >= 1 && currentZoomVal < 2) {
scale = currentZoomVal * (-0.6f) + 1.8f
} else if (currentZoomVal >= 2 && currentZoomVal < 3) {
scale = currentZoomVal * (-0.2f) + 1f
}else if(currentZoomVal >= 3 && currentZoomVal < 24){
scale = currentZoomVal * (-0.014f) + 0.404f
}
mMapView.getMapEngine().setAnchorRate(scale)
if (DEBUG) {
Log.d(TAG, "dispatchZoomChanged--scale: ${scale}")
zoomJob?.cancel()
zoomJob = getDemaningScope()?.launch(Dispatchers.IO) {
var currentZoomVal = mMapView.getMapEngine().getZoomValue()
if (DEBUG) {
Log.d(TAG, "dispatchZoomChanged--currentZoomVal: ${currentZoomVal}")
}
var scale = 0.1f
if (currentZoomVal >= 0.125 && currentZoomVal < 0.25) {
scale = currentZoomVal * (-28f) + 11f
} else if (currentZoomVal >= 0.25 && currentZoomVal < 0.5) {
scale = currentZoomVal * (-7.2f) + 5.8f
} else if (currentZoomVal >= 0.5 && currentZoomVal < 1) {
scale = currentZoomVal * (-2f) + 3.2f
} else if (currentZoomVal >= 1 && currentZoomVal < 2) {
scale = currentZoomVal * (-0.6f) + 1.8f
} else if (currentZoomVal >= 2 && currentZoomVal < 3) {
scale = currentZoomVal * (-0.2f) + 1f
} else if (currentZoomVal >= 3 && currentZoomVal < 24) {
scale = currentZoomVal * (-0.014f) + 0.404f
}
mMapView.getMapEngine().setAnchorRate(scale)
if (DEBUG) {
Log.d(TAG, "dispatchZoomChanged--scale: ${scale}")
}
}
}
//车辆摆动变化事件
@Synchronized override fun dispatchDAngleChanged() {
override fun dispatchDAngleChanged() {
val angle = getDAngle().toInt()
if (DEBUG) {
Log.d(TAG, "styleop-DAngle: ${angle}")
@@ -756,8 +759,8 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
var mMapStyleMode = 0
//设置地图风格
@Synchronized override fun setMapStyle(stylemode: Int) {
setMapStyle(stylemode,true)
override fun setMapStyle(stylemode: Int) {
setMapStyle(stylemode, true)
isSetMapStyle = true
}
@@ -766,38 +769,57 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
* @param isZoom true 需要缩放到指定缩放值 false 不需要缩放到指定缩放值
*
*/
private fun setMapStyle(stylemode:Int,isZoom:Boolean){
private fun setMapStyle(stylemode:Int, isZoom:Boolean){
if (CompileConfig.DEBUG) {
Log.i(TAG, "styleop-setMapStyle-start:${stylemode},${isZoom}}")
Log.i(TAG, "styleop-setMapStyle-start:${stylemode},${isZoom}")
}
if(mMapStyleMode == stylemode){
return
}
styleJob?.cancel()
styleJob = getDemaningScope()?.launch(Dispatchers.IO) {
if (stylemode >=5 && mMapStyleMode < 5) {
if(isZoom){
mMapStyleParams.setZoom(20)
}
mMapView.getMapEngine().setOffset(0, 0)
if (stylemode >= 5 && mMapStyleMode < 5) {
if (isZoom) {
mMapStyleParams.setZoom(20)
}
mMapView.getMapEngine().setOffset(0, 0)
//
if(mMapStyleParams.getDefaultPerspective() == ConstantExt.MAP_STYLE_VR_ANGLE_MIDDLE) {
interpolation(ConstantExt.MAP_STYLE_VR_EYE_HEIGHT_MIDDLE, ConstantExt.MAP_STYLE_VR_OVER_LOOK_ANGLE_MIDDLE, ConstantExt.MAP_STYLE_VR_ZOOM_VAL_MIDDLE, ConstantExt.MAP_STYLE_VR_ANGLE_MIDDLE, -1)
}else{
interpolation(ConstantExt.MAP_STYLE_VR_EYE_HEIGHT_ERHAI, ConstantExt.MAP_STYLE_VR_OVER_LOOK_ANGLE_ERHAI, ConstantExt.MAP_STYLE_VR_ZOOM_VAL_ERHAI, ConstantExt.MAP_STYLE_VR_ERHAI_B2, -1)
}
if (mMapStyleParams.getDefaultPerspective() == ConstantExt.MAP_STYLE_VR_ANGLE_MIDDLE) {
interpolation(
ConstantExt.MAP_STYLE_VR_EYE_HEIGHT_MIDDLE,
ConstantExt.MAP_STYLE_VR_OVER_LOOK_ANGLE_MIDDLE,
ConstantExt.MAP_STYLE_VR_ZOOM_VAL_MIDDLE,
ConstantExt.MAP_STYLE_VR_ANGLE_MIDDLE,
-1
)
} else {
interpolation(
ConstantExt.MAP_STYLE_VR_EYE_HEIGHT_ERHAI,
ConstantExt.MAP_STYLE_VR_OVER_LOOK_ANGLE_ERHAI,
ConstantExt.MAP_STYLE_VR_ZOOM_VAL_ERHAI,
ConstantExt.MAP_STYLE_VR_ERHAI_B2,
-1
)
}
} else if(mMapStyleMode >= 5 && stylemode < 5){
if(isZoom){
mMapStyleParams.setZoom(16)
}
} else if (mMapStyleMode >= 5 && stylemode < 5) {
if (isZoom) {
mMapStyleParams.setZoom(16)
}
// mMapView.getMapEngine().setOffset((MapTools.viewWidth * (mMapStyleParams.getOffsetX() - 0.5f)).toInt(), ((MapTools.viewWidth * (MapHelper.mMapParams.getOffsetY() - 0.5f)).toInt()))
interpolation(ConstantExt.MAP_STYLE_2D_EYE_HEIGHT, ConstantExt.MAP_STYLE_2D_OVER_LOOK_ANGLE, ConstantExt.MAP_STYLE_2D_ZOOM.toFloat(), -1, -1)
}
mMapView.getMapEngine().setMapStyle(stylemode)
mMapStyleMode = stylemode
mMapStyleParams.setStyleMode(mMapStyleMode)
interpolation(
ConstantExt.MAP_STYLE_2D_EYE_HEIGHT,
ConstantExt.MAP_STYLE_2D_OVER_LOOK_ANGLE,
ConstantExt.MAP_STYLE_2D_ZOOM.toFloat(),
-1,
-1
)
}
mMapView.getMapEngine().setMapStyle(stylemode)
mMapStyleMode = stylemode
mMapStyleParams.setStyleMode(mMapStyleMode)
// mMapView.getMapEngine().shakeSceneManual()
// instance.naviAutoView?.let{naviAutoView->
// naviAutoView.getLazyZoomButtonView()?.let {
@@ -811,14 +833,17 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
// }
// }
mILocationView?.switch(stylemode)
if (CompileConfig.DEBUG) {
Log.i(TAG, "styleop-setMapStyle-end:${stylemode}")
mILocationView?.switch(stylemode)
if (CompileConfig.DEBUG) {
Log.i(TAG, "styleop-setMapStyle-end:${stylemode}")
}
withContext(Dispatchers.Main) {
mEventController?.dispatchMapStyleListener(stylemode)
}
}
mEventController?.dispatchMapStyleListener(stylemode)
}
@Synchronized override fun getMapStyle(): Int {
override fun getMapStyle(): Int {
return mMapStyleMode
}
@@ -1366,8 +1391,9 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
}
}
mEventController?.dispatchMapViewVisualAngleChangeListener(type)
if(type != ConstantExt.MAP_STYLE_VR_ROAM) {
mEventController?.dispatchMapViewVisualAngleChangeListener(type)
}
}
fun setRoamStyle() {
@@ -1504,7 +1530,7 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
if (disRoam < 300) {
Log.e(
TAG,
"Roam--op--status: 获取剩余数据失败,剩余数据距离: ${disRoam}"
"Roam--op--status: 获取剩余数据失败,剩余数据距离: ${String.format("%.1f", disRoam)}"
)
remainList.clear()
} else {
@@ -1545,12 +1571,13 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
Log.e(
TAG,
"Roam--op--status: 进入漫游模式失败:获取数据距离太短: ${disRoam}"
"Roam--op--status: 进入漫游模式失败:获取数据距离太短: ${String.format("%.1f", disRoam)}"
)
mEventController?.dispatchRoamStatusListener(
1,
"进入漫游模式失败:获取数据距离太短: ${disRoam}"
"进入漫游模式失败:获取数据距离太短: ${String.format("%.1f", disRoam)}"
)
return
}
roamJob?.cancel()
@@ -1730,92 +1757,7 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
}
private var mIsExecute: AtomicBoolean = AtomicBoolean(true)
private var cacheList = CopyOnWriteArrayList<Int>()
override fun cacheHDDataByCity(id: Int, listener: OnHdDataDownByCityListener){
if(id == 0) {
return
}
// 检查特定城市是否已经有一个缓存操作正在进行
if(cacheList.contains(id)){
return
}
mEventController?.addHdDataDownListener(id,listener)
cancelCacheHDData()
cacheList.add(id)
RoadHelper.getInstance()?.cacheHDDataByCity(id,object : IResult<Boolean> {
override fun result(code: Int, result: Boolean?) {
mIsExecute.set(result?:false)
if (DEBUG) {
Log.i(TAG, "cacheHDDataByCity--op--isDown--: ${id}, ${mIsExecute.get()},${Thread.currentThread()}")
}
if(!mIsExecute.get()){
mEventController?.dispatchHdDataDownStateListener(id, 0)
mEventController?.removeHdDataDownListener(id)
}
// 任务完成后从 cacheJobs map 中移除该任务
cacheList.remove(id)
}
})
cacheHdDataProgressJob?.cancel()
cacheHdDataProgressJob = getDemaningScope()?.launch(Dispatchers.IO) {
var progress = 0.0
while (progress < 1.0) {
RoadHelper.getInstance()?.getCacheProgressByCity(id,object : IResult<Double> {
override fun result(code: Int, result: Double?) {
progress = result?:0.0
if (DEBUG) {
Log.i(TAG, "cacheHDDataByCity--op--id: ${id}, progress:${progress}")
}
mEventController?.dispatchHdDataDownListener(id, progress)
if (DEBUG) {
Log.i(TAG, "cacheHDDataByCity--op--listener:${listener},id: ${id}, progress:${progress}")
}
if (progress == 1.0) {
mEventController?.dispatchHdDataDownStateListener(id, 1)
mEventController?.removeHdDataDownListener(id)
}
}
})
delay(1000)
}
}
}
override fun cacheHDDataByCityLonLat(lon: Double, lat: Double, listener: OnHdDataDownByCityListener){
if (TransformUtils.outOfChina(lat, lon)) {
return
}
RoadHelper.getInstance()?.getCityCode(lon, lat, object : IResult<Int> {
override fun result(code: Int, id: Int?) {
if (id == 0) {
return
}
if (DEBUG) {
Log.i(TAG, "cacheHDDataByCityLonLat--op--id: ${id}")
}
id?.let {
cacheHDDataByCity(id, listener)
}
}
})
}
override fun cancelCacheHDData(){
cacheHdDataProgressJob?.cancel()
cacheList.clear()
RoadHelper.getInstance()?.cancelCacheHDData()
}
override fun interpolation(eyeHeight: Float, angle: Float, zoomVal: Float, mode: Int, duration: Int) {
@@ -1995,11 +1937,12 @@ class MapController(private var context: Context?, private val mMapView: IMapVie
transJob?.cancel()
transJob = null
styleJob?.cancel()
styleJob = null
cacheHdDataProgressJob?.cancel()
cacheHdDataProgressJob = null
zoomJob?.cancel()
zoomJob = null
RoadHelper.getInstance()?.cancelCacheHDData()
isRoam.set(false)
mRecyClerController.clear()

View File

@@ -5,13 +5,13 @@ import android.text.TextUtils
import android.util.Log
import com.alibaba.fastjson.JSON
import com.autonavi.nge.map.LonLat
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.CompileConfig.DEBUG
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.inner.abs.IMarkerCall
import com.zhidaoauto.map.sdk.open.abs.marker.OnMarkerDragListener
import com.zhidaoauto.map.sdk.open.marker.*
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.tools.MD5Utils
import com.zhidaoauto.map.sdk.open.tools.MapTools
import io.netty.buffer.Unpooled
@@ -507,7 +507,7 @@ class MarkerNativeInterface(private val mMapController: IMapController): IMarker
refreshMap()
}
fun addDynamicAnchorPostion(id: String, points: List<LonLatPoint>,angle:Float, isGps:Boolean,current:Long,duration: Int) {
fun addDynamicAnchorPostion(id: String, points: List<LonLatPoint>, angle:Float, isGps:Boolean, current:Long, duration: Int) {
val data = MapTools.listToArray(points,!isGps)
if(CompileConfig.DEBUG){
Log.i(TAG,"markerop--addDynamicAnchorPostion:${id},${points},isGps:${isGps},duration:${duration}")

View File

@@ -4,6 +4,9 @@ import android.content.Context
import android.util.Log
import android.view.Gravity
import android.view.Menu
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.data.road.Lane
import com.zhidaoauto.map.data.road.RoadSign
import com.zhidaoauto.map.sdk.R
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.abs.IMapController
@@ -12,9 +15,6 @@ import com.zhidaoauto.map.sdk.inner.utils.MathUtils
import com.zhidaoauto.map.sdk.open.MapAutoApi
import com.zhidaoauto.map.sdk.open.abs.OnMapChangeListener
import com.zhidaoauto.map.sdk.open.location.MogoLocation
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.road.Lane
import com.zhidaoauto.map.sdk.open.road.RoadSign
import kotlinx.android.synthetic.main.panel_traffic_sign.view.iv_traffic
import kotlin.math.abs

View File

@@ -7,8 +7,8 @@ import android.graphics.Point;
import android.util.AttributeSet;
import android.view.View;
import com.zhidaoauto.map.data.point.LonLatPoint;
import com.zhidaoauto.map.sdk.open.abs.MapStatusListener;
import com.zhidaoauto.map.sdk.open.query.LonLatPoint;
import java.util.List;

View File

@@ -1,8 +1,8 @@
package com.zhidaoauto.map.sdk.inner.provider
import com.alibaba.fastjson.JSON
import com.zhidaoauto.map.data.routeinfo.SPRouteLine
import com.zhidaoauto.map.sdk.inner.obj.ResultData
import com.zhidaoauto.map.sdk.open.routeinfo.SPRouteLine
class MapDataHelper private constructor() {

View File

@@ -2,12 +2,12 @@ package com.zhidaoauto.map.sdk.inner.proxy
import android.util.Log
import com.autonavi.nge.map.LonLat
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.abs.ILonLatProxy
import com.zhidaoauto.map.sdk.inner.common.MapHelper
import com.zhidaoauto.map.sdk.inner.utils.TransformUtils
import com.zhidaoauto.map.sdk.open.MapParams
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
class LonLatProxy : ILonLatProxy {

View File

@@ -6,6 +6,8 @@ import com.autonavi.nge.MapBox
import com.autonavi.nge.hdmap.HDMapProvider
import com.autonavi.nge.map.LonLat
import com.autonavi.nge.routeinfo.RouteInfoProvider
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.data.routeinfo.RoadInfo
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.abs.IRoadData
import com.zhidaoauto.map.sdk.inner.aspect.KotlinExtern.toTenDecimalsStr
@@ -14,10 +16,18 @@ import com.zhidaoauto.map.sdk.inner.utils.ConcurrentLRUCache
import com.zhidaoauto.map.sdk.open.abs.IResult
import com.zhidaoauto.map.sdk.open.data.CityInfo
import com.zhidaoauto.map.sdk.open.data.MapDataApi
import com.zhidaoauto.map.sdk.open.data.SinglePointRoadInfo
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.road.*
import com.zhidaoauto.map.sdk.open.routeinfo.RoadInfo
import com.zhidaoauto.map.data.road.*
import com.zhidaoauto.map.sdk.inner.controller.CommonController
import com.zhidaoauto.map.sdk.inner.map.MapController
import com.zhidaoauto.map.sdk.inner.utils.TransformUtils
import com.zhidaoauto.map.sdk.open.abs.OnHdDataDownByCityListener
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.CopyOnWriteArrayList
import java.util.concurrent.atomic.AtomicBoolean
class RoadHelper {
@@ -42,6 +52,9 @@ class RoadHelper {
var lastSpeed = 60
private var cacheHdDataProgressJob: Job? = null
private var mHdDataDownloadListener: ConcurrentHashMap<Int, OnHdDataDownByCityListener>? = null
private constructor() {
routeInfoProvider = RouteInfoProvider()
@@ -51,6 +64,15 @@ class RoadHelper {
fun release(){
cacheHdDataProgressJob?.cancel()
cacheHdDataProgressJob = null
mHdDataDownloadListener?.clear()
mHdDataDownloadListener = null
cancelCacheHDData()
RouteInfoProvider.release()
if(CompileConfig.DEBUG){
Log.w(TAG, "destroyop--:RouteInfoProvider.destory")
@@ -150,7 +172,7 @@ class RoadHelper {
* 转换道路信息经纬度
*/
private fun dealLonLatList(data: ArrayList<LonLat>): ArrayList<LonLatPoint> {
var result = ArrayList<LonLatPoint>()
val result = ArrayList<LonLatPoint>()
for (lonLat in data) {
result.add(CommonProxy.getInstance().getLonLatProxy().switchLonLat(lonLat))
}
@@ -348,7 +370,7 @@ class RoadHelper {
call.result(1,null)
return
}
var roadInfo = RoadInfo()
val roadInfo = RoadInfo()
roadInfo.tileID = array[0].toLong()
roadInfo.roadID = array[1].toLong()
roadInfo.speed = array[2].toInt()
@@ -441,7 +463,7 @@ class RoadHelper {
// Calculate the angle of the center line.
val pMatch = LonLatPoint()
MapDataApi.getDisFromPointToLine(LonLatPoint(dLon, dLat), ArrayList(centerLine.points), pMatch, 1)
MapDataApi.GetDisFromPointToLine(LonLatPoint(dLon, dLat), ArrayList(centerLine.points), pMatch, 1)
centerLine.angle = pMatch.angle
// Add the center line to the cache.
@@ -522,9 +544,9 @@ class RoadHelper {
}
stopLine.lane_id = laneId.split("*")
stopLine.length = array[3].toDouble()
val points = ArrayList<LonLatPoint>()
var points = ArrayList<LonLatPoint>()
for (i in 4..array.size - 1 step 2) {
var lonLatPoint = LonLatPoint(array[i].toDouble(), array[i + 1].toDouble())
val lonLatPoint = LonLatPoint(array[i].toDouble(), array[i + 1].toDouble())
points.add(lonLatPoint)
}
stopLine.points = points
@@ -648,7 +670,7 @@ class RoadHelper {
val array = result.split(",")
if(array != null && array.size > 5) {
var centerLine = CenterLine()
val centerLine = CenterLine()
centerLine.id = array[0]
centerLine.tile_id = array[1]
centerLine.road_id = array[2]
@@ -659,8 +681,8 @@ class RoadHelper {
points.add(lonLatPoint)
}
centerLine.points = points
var pMatch = LonLatPoint()
MapDataApi.getDisFromPointToLine(LonLatPoint(dLon, dlat), points, pMatch, 1)
val pMatch = LonLatPoint()
MapDataApi.GetDisFromPointToLine(LonLatPoint(dLon, dlat), points, pMatch, 1)
centerLine.angle = pMatch.angle
// Add the result to the cache
centerLineCache.put(cacheKey,centerLine)
@@ -686,7 +708,7 @@ class RoadHelper {
fun getCenterLineRoadNode(dLon: Double, dLat: Double, fAngle: Float, fDis: Float,call: IResult<CenterLine>) {
// Combine the four parameters into a single string as the cache key
var start = System.currentTimeMillis()
val start = System.currentTimeMillis()
if (CompileConfig.DEBUG) {
Log.d(TAG, "roadop--getCenterLineRoadNode--: ${dLon}, ${dLat}, ${fAngle}")
}
@@ -719,7 +741,7 @@ class RoadHelper {
}
val array = result.split(",")
if (array != null && array.size > 5) {
var centerLine = CenterLine()
val centerLine = CenterLine()
centerLine.id = array[0]
centerLine.tile_id = array[1]
centerLine.road_id = array[2]
@@ -757,7 +779,7 @@ class RoadHelper {
}
result?.let {
val array = result.split(",")
var roadNameInfo = RoadNameInfo()
val roadNameInfo = RoadNameInfo()
if(array != null && array.size > 2) {
roadNameInfo.tile_id = array[0]
roadNameInfo.road_id = array[1]
@@ -838,9 +860,9 @@ class RoadHelper {
result?.let {
val array = result.split(",")
if(array != null && array.size >= 2) {
var list = ArrayList<LonLatPoint>()
val list = ArrayList<LonLatPoint>()
for(i in 0 until array.size step 2){
var lonLatPoint = LonLatPoint(array[i].toDouble(), array[i+1].toDouble())
val lonLatPoint = LonLatPoint(array[i].toDouble(), array[i+1].toDouble())
list.add(lonLatPoint)
}
call.result(code,list)
@@ -919,6 +941,8 @@ class RoadHelper {
}
fun cancelCacheHDData() {
cacheHdDataProgressJob?.cancel()
cacheList.clear()
RoadResultController.instance.removeRoadResultListenerByTag("cacheHDDataBy")
RoadResultController.instance.removeRoadResultListenerByTag("getCacheProgressByCity")
mapBox.cancelCacheHDData()
@@ -959,13 +983,13 @@ class RoadHelper {
if(CompileConfig.DEBUG){
Log.d(TAG, "roadop--getAllCityCode--result: ${result}")
}
var cityList = ArrayList<CityInfo>()
val cityList = ArrayList<CityInfo>()
result?.let {
val array = result.split(";")
if(array!= null && array.isNotEmpty()){
for(str in array){
if(str.isNotEmpty()){
var cityInfo = CityInfo()
val cityInfo = CityInfo()
val city = str.trim().split(",")
if(city.isNotEmpty() && city.size >= 4){
cityInfo.cityCode = city[0].trim().toIntOrNull()?:0
@@ -1015,7 +1039,7 @@ class RoadHelper {
return
}
result?.let {
var list = ArrayList<ZebraLine>()
val list = ArrayList<ZebraLine>()
val array = result.split(";")
if(!array.isEmpty()) {
for(arr in array){
@@ -1033,7 +1057,7 @@ class RoadHelper {
zebraLine.id = line[2]
val lonlats = ArrayList<LonLatPoint>()
for(i in 3 until line.size step 2){
var lonLatPoint = LonLatPoint(line[i].toDouble(), line[i+1].toDouble())
val lonLatPoint = LonLatPoint(line[i].toDouble(), line[i+1].toDouble())
lonlats.add(lonLatPoint)
}
zebraLine.zebraLineList = lonlats
@@ -1056,4 +1080,122 @@ class RoadHelper {
})
mapBox.llaGetZebraLineByDistance(dLon,dlat,fAngle,dis)
}
private var mIsExecute: AtomicBoolean = AtomicBoolean(true)
private var cacheList = CopyOnWriteArrayList<Int>()
fun cacheHDDataByCity(id: Int, listener: OnHdDataDownByCityListener){
if(id == 0) {
return
}
// 检查特定城市是否已经有一个缓存操作正在进行
if(cacheList.contains(id)){
return
}
addHdDataDownListener(id,listener)
cancelCacheHDData()
cacheList.add(id)
RoadHelper.getInstance()?.cacheHDDataByCity(id,object : IResult<Boolean> {
override fun result(code: Int, result: Boolean?) {
mIsExecute.set(result?:false)
if (CompileConfig.DEBUG) {
Log.i(TAG, "cacheHDDataByCity--op--isDown--: ${id}, ${mIsExecute.get()},${Thread.currentThread()}")
}
if(!mIsExecute.get()){
dispatchHdDataDownStateListener(id, 0)
removeHdDataDownListener(id)
}
// 任务完成后从 cacheJobs map 中移除该任务
cacheList.remove(id)
}
})
cacheHdDataProgressJob?.cancel()
cacheHdDataProgressJob = CommonController.instance.scope?.launch(Dispatchers.IO) {
var progress = 0.0
while (progress < 1.0) {
RoadHelper.getInstance()?.getCacheProgressByCity(id,object : IResult<Double> {
override fun result(code: Int, result: Double?) {
progress = result?:0.0
if (CompileConfig.DEBUG) {
Log.i(TAG, "cacheHDDataByCity--op--id: ${id}, progress:${progress}")
}
dispatchHdDataDownListener(id, progress)
if (CompileConfig.DEBUG) {
Log.i(TAG, "cacheHDDataByCity--op--listener:${listener},id: ${id}, progress:${progress}")
}
if (progress == 1.0) {
dispatchHdDataDownStateListener(id, 1)
removeHdDataDownListener(id)
}
}
})
delay(1000)
}
}
}
fun cacheHDDataByCityLonLat(lon: Double, lat: Double, listener: OnHdDataDownByCityListener){
if (TransformUtils.outOfChina(lat, lon)) {
return
}
RoadHelper.getInstance()?.getCityCode(lon, lat, object : IResult<Int> {
override fun result(code: Int, id: Int?) {
if (id == 0) {
return
}
if (CompileConfig.DEBUG) {
Log.i(TAG, "cacheHDDataByCityLonLat--op--id: ${id}")
}
id?.let {
cacheHDDataByCity(id, listener)
}
}
})
}
fun addHdDataDownListener(id: Int, onHdDataDownByCityListener: OnHdDataDownByCityListener){
if(mHdDataDownloadListener == null){
mHdDataDownloadListener = ConcurrentHashMap()
}
if(!mHdDataDownloadListener!!.keys.contains(id)) {
mHdDataDownloadListener?.put(id, onHdDataDownByCityListener)
}
}
fun removeHdDataDownListener(id: Int){
mHdDataDownloadListener?.let {
if(it.keys.contains(id)) {
it.remove(id)
}
}
}
fun dispatchHdDataDownListener(id: Int, progress: Double){
mHdDataDownloadListener?.let {
for(listener in it.values){
listener.onMapHDDataCacheProgressByCity(id,progress)
}
}
}
fun dispatchHdDataDownStateListener(id: Int, state: Int){
mHdDataDownloadListener?.let {
for(listener in it.values){
listener.onMapHDDataCacheStateByCity(id,state)
}
}
}
}

View File

@@ -2,8 +2,8 @@ package com.zhidaoauto.map.sdk.inner.traffic
import android.text.TextUtils
import android.util.Log
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
class TrafficHelper {

View File

@@ -5,7 +5,7 @@ import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.location.LocationManager;
import com.zhidaoauto.map.sdk.open.query.LonLatPoint;
import com.zhidaoauto.map.data.point.LonLatPoint;
import java.util.List;

View File

@@ -25,6 +25,7 @@ import android.widget.TextView
import android.widget.Toast
import androidx.recyclerview.widget.RecyclerView
import com.autonavi.nge.guidance.RouteBook
import com.autonavi.nge.guidance.RouteBookAdapter
import com.autonavi.nge.obj.SubCategory
import com.autonavi.nge.routing.RoutingProvider
import com.zhidaoauto.map.sdk.R
@@ -287,7 +288,7 @@ object Constant {
Environment.MEDIA_MOUNTED
) {
mbExternalStorage = true
res = context.externalCacheDir?.absolutePath +"/map/"
res = context.externalCacheDir.absolutePath +"/map/"
// res = (Environment.getExternalStorageDirectory().absolutePath
// + "/Android/data/" + context.packageName+"/map/")
} else {

View File

@@ -2,8 +2,8 @@ package com.zhidaoauto.map.sdk.inner.utils;
import android.util.Log;
import com.zhidaoauto.map.data.point.LonLatPoint;
import com.zhidaoauto.map.sdk.inner.CompileConfig;
import com.zhidaoauto.map.sdk.open.query.LonLatPoint;
import java.util.ArrayList;

View File

@@ -1,9 +1,9 @@
package com.zhidaoauto.map.sdk.inner.utils
import android.util.Log
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.CompileConfig.DEBUG
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import java.math.BigDecimal
import java.text.DateFormat
import java.text.SimpleDateFormat

View File

@@ -1,6 +1,9 @@
package com.zhidaoauto.map.sdk.inner.utils
import android.content.Context
import com.amap.api.location.CoordinateConverter
import com.amap.api.location.CoordinateConverter.CoordType
import com.amap.api.location.DPoint
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import java.math.BigDecimal
@@ -198,10 +201,41 @@ object TransformUtils {
}
fun tempTrans(param:DoubleArray,context: Context?){
var doubleArrayParam = param
// System.out.println("origin:${doubleArrayParam.joinToString() }");
transform(doubleArrayParam,context)
// System.out.println("middle:${index},${if(index%2==0){"GPS:"}else{"GCJ:"}}--${doubleArrayParam.joinToString()}")
// System.out.println("result:${doubleArrayParam.joinToString()}")
}
fun transform(doubleArray: DoubleArray,context: Context?){
System.out.println("origin:${doubleArray.joinToString()}")
val point = gd_Transform(context, DPoint(doubleArray[1],doubleArray[0]))
val gdarray = doubleArrayOf(point.longitude,point.latitude)
System.out.println("gaode:${gdarray.joinToString()}")
val mogo = transformWgs84ToGcj02(doubleArray[1], doubleArray[0])
System.out.println("mogo:${mogo.joinToString()}")
val gaodetoOrigin = transformGcj02toWgs84(gdarray[1], gdarray[0])
System.out.println("gaode-to-origin:${gaodetoOrigin.joinToString()}")
val mogotoOrigin = transformGcj02toWgs84(mogo[1], mogo[0])
System.out.println("mogo-to-origin:${mogotoOrigin.joinToString()}")
}
fun gd_Transform(context: Context?,sourceLatLng:DPoint):DPoint{
val converter = CoordinateConverter(context)
// CoordType.GPS 待转换坐标类型
converter.from(CoordType.GPS)
// sourceLatLng待转换坐标点 LatLng类型
converter.coord(sourceLatLng)
// 执行转换操作
return converter.convert()
}
fun outOfScreen(context: Context, lon: Double, lat: Double,mapController: IMapController?): Boolean{
val displayMetrics = context.resources.getDisplayMetrics()

View File

@@ -6,10 +6,11 @@ import android.util.Log
import com.autonavi.nge.NLog
import com.autonavi.nge.map.LonLat
import com.autonavi.nge.map.MapView
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.abs.IEventController
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.inner.abs.IMarkerController
import com.zhidaoauto.map.sdk.inner.common.CommonHelper
import com.zhidaoauto.map.sdk.inner.common.ConstantExt
import com.zhidaoauto.map.sdk.inner.common.MapHelper
import com.zhidaoauto.map.sdk.inner.controller.CommonController
@@ -29,7 +30,6 @@ import com.zhidaoauto.map.sdk.open.abs.navi.INaviResult
import com.zhidaoauto.map.sdk.open.data.MapDataApi
import com.zhidaoauto.map.sdk.open.location.MyLocationStyle
import com.zhidaoauto.map.sdk.open.navi.NaviModel
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.tools.MapTools
import com.zhidaoauto.map.sdk.open.view.MapAutoView
import io.netty.buffer.Unpooled
@@ -110,6 +110,7 @@ object MapAutoApi {
* 初始化
*/
fun init(context: Context, mapParams: MapParams) {
CommonHelper.getInstance()
CommonController.instance.init(context)
Recorder.i("common","$mapParams")
val customPath = context.filesDir.absolutePath
@@ -147,7 +148,7 @@ object MapAutoApi {
Recorder.add(content)
}
fun destory() {
fun destroy() {
if(CompileConfig.DEBUG){
Log.w(TAG, "destroyop--:start")
}
@@ -166,26 +167,6 @@ object MapAutoApi {
return MapHelper.mMapParams
}
fun setMyLocationEnabled(myLocationEnabled: Boolean,mapAutoView: MapAutoView) {
mapAutoView.getLocationView()?.setMyLocationEnabled(myLocationEnabled)
}
fun getMyLocationEnabled(mapAutoView: MapAutoView): Boolean {
return mapAutoView.getLocationView()?.getMyLocationEnabled()?:false
}
fun setMyLocationStyle(myLocationStyle: MyLocationStyle,mapAutoView: MapAutoView) {
mapAutoView.getLocationView()?.setMyLocationStyle(myLocationStyle)
}
fun getMyLocationStyle(mapAutoView: MapAutoView): MyLocationStyle? {
return mapAutoView.getLocationView()?.getMyLocationStyle()
}
fun setInfoWindowAdapter(infoWindowAdapter: InfoWindowAdapter,markerController: IMarkerController?) {
markerController?.setInfoWindow(infoWindowAdapter)
}
/**
* Calculate the tile ID based on longitude, latitude, and tile level.
@@ -380,16 +361,6 @@ object MapAutoApi {
}
fun addImagetoImageManager(imageKey: String, imageByteArray: ByteArray, width: Int, height: Int,mapController: IMapController?):Int?{
return mapController?.addImage(
imageKey,
imageByteArray,
width,
height
)
}
fun getSDKVersion():String{
return com.zhidaoauto.map.sdk.BuildConfig.MAPMODULE_VERSION
}

View File

@@ -3,12 +3,12 @@ package com.zhidaoauto.map.sdk.open
import android.content.Context
import com.autonavi.nge.map.LonLat
import com.autonavi.nge.map.MapView
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.common.MapHelper
import com.zhidaoauto.map.sdk.inner.common.NavHelper
import com.zhidaoauto.map.sdk.inner.controller.CommonController
import com.zhidaoauto.map.sdk.inner.map.MapController
import com.zhidaoauto.map.sdk.inner.utils.Recorder
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import io.netty.buffer.Unpooled
import java.math.BigDecimal
import java.nio.charset.Charset

View File

@@ -1,6 +1,6 @@
package com.zhidaoauto.map.sdk.open.abs
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
interface OnMapClickListener {
fun onMapClick(lonLatPoint: LonLatPoint)

View File

@@ -1,7 +1,7 @@
package com.zhidaoauto.map.sdk.open.abs
import com.zhidaoauto.map.sdk.open.road.RoadCross
import com.zhidaoauto.map.sdk.open.road.StopLine
import com.zhidaoauto.map.data.road.RoadCross
import com.zhidaoauto.map.data.road.StopLine
interface OnRoadInfoListener {

View File

@@ -1,8 +1,8 @@
package com.zhidaoauto.map.sdk.open.abs.navi
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
interface INaviResult {
fun result(code:Int,data: ArrayList<LonLatPoint>?,message: String?)
fun result(code:Int, data: ArrayList<LonLatPoint>?, message: String?)
}

View File

@@ -105,4 +105,12 @@ interface IMapStyleParams {
fun getIsWeatherEnable(): Boolean
fun setLocationIcon3DRes(resId: Int): MapStyleParams
fun getLocationIcon3DRes(): Int
fun setLocationIconRes(resId: Int): MapStyleParams
fun getLocationIconRes(): Int
}

View File

@@ -1,8 +1,8 @@
package com.zhidaoauto.map.sdk.open.business
import android.util.Log
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.tools.MapTools

View File

@@ -1,6 +1,6 @@
package com.zhidaoauto.map.sdk.open.camera
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
class CameraPosition(
val target: LonLatPoint,

View File

@@ -1,8 +1,8 @@
package com.zhidaoauto.map.sdk.open.camera
import android.graphics.Point
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.map.MapCameraMessageImpl
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
object CameraUpdateFactory {

View File

@@ -1,7 +1,7 @@
package com.zhidaoauto.map.sdk.open.camera
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.utils.TransformUtils
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
class LatLngBounds {

View File

@@ -1,6 +1,6 @@
package com.zhidaoauto.map.sdk.open.circle;
import com.zhidaoauto.map.sdk.open.query.LonLatPoint;
import com.zhidaoauto.map.data.point.LonLatPoint;
import java.util.List;
import java.util.UUID;

View File

@@ -1,38 +1,38 @@
package com.zhidaoauto.map.sdk.open.data
import android.annotation.SuppressLint
import android.app.ActivityManager
import android.content.Context
import android.text.TextUtils
import android.util.Log
import com.autonavi.nge.dm.SharedMemoryService
import com.autonavi.nge.map.LonLat
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.data.routeinfo.RoadInfo
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.proxy.CommonProxy
import com.zhidaoauto.map.sdk.inner.road.RoadHelper
import com.zhidaoauto.map.sdk.inner.utils.GisGeomTool
import com.zhidaoauto.map.sdk.inner.utils.LogHelper
import com.zhidaoauto.map.sdk.inner.utils.MathUtils
import com.zhidaoauto.map.sdk.inner.utils.Recorder
import com.zhidaoauto.map.sdk.open.abs.IResult
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.road.CenterLine
import com.zhidaoauto.map.sdk.open.road.Lane
import com.zhidaoauto.map.sdk.open.road.RoadCross
import com.zhidaoauto.map.sdk.open.road.RoadNameInfo
import com.zhidaoauto.map.sdk.open.road.RoadRectInfos
import com.zhidaoauto.map.sdk.open.road.StopLine
import com.zhidaoauto.map.sdk.open.road.ZebraLine
import com.zhidaoauto.map.sdk.open.routeinfo.RoadInfo
import com.zhidaoauto.map.data.road.*
import com.zhidaoauto.map.sdk.open.abs.OnHdDataDownByCityListener
import java.util.concurrent.ConcurrentHashMap
@SuppressLint("StaticFieldLeak")
object MapDataApi {
private val TAG = javaClass.simpleName
private var mContext:Context? = null
fun getContext():Context?{
return mContext
}
fun startZeus(context: Context?) {
fun startZeus(context: Context) {
if (CompileConfig.DEBUG) {
Log.i(TAG, "mapop-start")
}
@@ -40,7 +40,7 @@ object MapDataApi {
SharedMemoryService.getInstance(context)
}
fun destroy(){
fun destroy(){
RoadHelper.getInstance()?.release()
if(CompileConfig.DEBUG){
Log.w(TAG, "destroyop--:RoadHelper.destory")
@@ -52,6 +52,31 @@ object MapDataApi {
mContext = null
}
/**
* 判断服务是否开启
*
* @return
*/
fun isServiceRunning(context: Context, ServiceName: String): Boolean {
if (true) {
return false
}
if (TextUtils.isEmpty(ServiceName)) {
return false
}
val myManager = context
.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
val runningServices = myManager
.getRunningServices(50) as ArrayList<ActivityManager.RunningServiceInfo>
for (info in runningServices) {
if (info.service.className.equals(ServiceName)) {
return true
}
}
return false
}
fun getRouteInfo(
centerLon: Float,
centerLat: Float, coor: Int, type: Int
@@ -60,6 +85,48 @@ object MapDataApi {
return RoadHelper.getInstance()?.getRoadInfo(centerLon, centerLat, coor, type)?:""
}
/**
* 获取道路关键点数据
*
*/
fun getMatchRoadInfo(
lonLatPoints: List<LonLatPoint>,
bGetAllPoints: Boolean
): List<LonLatPoint>? {
if (CompileConfig.DEBUG) {
Log.i(TAG, "roadop getMatchRoadInfo")
}
val originArray = DoubleArray(lonLatPoints.size * 2)
var lonLat: LonLat?
for ((index, lonLatPoint) in lonLatPoints.withIndex()) {
lonLat = CommonProxy.getInstance().getLonLatProxy().switchLonLat(lonLatPoint)
originArray[index * 2] = lonLat.lon
originArray[index * 2 + 1] = lonLat.lat
}
if (CompileConfig.DEBUG) {
LogHelper.info(TAG, "roadop getMatchRoadInfo--param:${originArray.joinToString()}")
// Recorder.i("${originArray.joinToString()}")
}
val resultArray = RoadHelper.getInstance()?.getMatchRoadInfo(originArray, bGetAllPoints)
if (CompileConfig.DEBUG) {
LogHelper.info(TAG, "roadop getMatchRoadInfo--resultArray:${resultArray?.joinToString()}")
}
resultArray?.let { array ->
if (resultArray.isEmpty()) {
return null
}
var lonLatPoint: LonLatPoint?
val resultList = ArrayList<LonLatPoint>(resultArray.size / 2)
for (index in 0..array.size - 1 step 2) {
lonLatPoint = CommonProxy.getInstance().getLonLatProxy().switchLonLat(LonLat(array[index], array[index + 1]))
resultList.add(lonLatPoint)
}
return resultList
}
return null
}
/**
* 获取行车方向
*
@@ -68,15 +135,15 @@ object MapDataApi {
if (CompileConfig.DEBUG) {
Log.i(TAG, "queryop getRouteAngle")
}
val sLonLat =
val startLonLat =
CommonProxy.getInstance().getLonLatProxy().switchLonLat(startLonLat)
val eLonLat =
val endLonLat =
CommonProxy.getInstance().getLonLatProxy().switchLonLat(endLonLat)
return RoadHelper.getInstance()?.getRouteAngle(
sLonLat.lon.toFloat(),
sLonLat.lat.toFloat(),
eLonLat.lon.toFloat(),
eLonLat.lat.toFloat()
startLonLat.lon.toFloat(),
startLonLat.lat.toFloat(),
endLonLat.lon.toFloat(),
endLonLat.lat.toFloat()
)?:0f
}
@@ -94,12 +161,12 @@ object MapDataApi {
}
// 获取点到线段的距离
fun getDisFromPointToLine(ptOrg:LonLatPoint, pLine:ArrayList<LonLatPoint>, ptMatch:LonLatPoint, nSegmentOrder:Int):Double {
fun GetDisFromPointToLine( ptOrg:LonLatPoint, pLine:ArrayList<LonLatPoint>, ptMatch:LonLatPoint, nSegmentOrder:Int):Double {
return GisGeomTool.GetDisFromPointToLine(ptOrg, pLine, ptMatch, nSegmentOrder)
}
// 获取点到线段的最近距离
fun getClosestFromPointToSegment(x: Double, y: Double, x1: Double, y1: Double, x2: Double, y2: Double): Double {
fun getNearstFromPointToSegment(x: Double, y: Double, x1: Double, y1: Double, x2: Double, y2: Double): Double {
return MathUtils.minDistance(x, y, x1, y1, x2, y2)
}
@@ -160,9 +227,9 @@ object MapDataApi {
/**
* 获取道路路口信息
*/
fun getCrossRoad(dLon: Double, dLat: Double, fAngle: Float, call: IResult<RoadCross>){
Recorder.add("roadop-getCrossRoad:$dLon,$dLat,$fAngle")
RoadHelper.getInstance()?.getCrossRoad(dLon, dLat, fAngle,call)
fun getCrossRoad(dLon: Double, dlat: Double , fAngle: Float,call: IResult<RoadCross>){
Recorder.add("roadop-getCrossRoad:$dLon,$dlat,$fAngle")
RoadHelper.getInstance()?.getCrossRoad(dLon, dlat, fAngle,call)
}
/**
* 根据路口id获取道路信息
@@ -212,9 +279,9 @@ object MapDataApi {
}
fun getZebraLineByDistance(dLon: Double, dLat: Double, fAngle: Float, dis: Float, call: IResult<MutableList<ZebraLine>>){
Recorder.add("$dLon,$dLat,$fAngle,$dis")
RoadHelper.getInstance()?.getZebraLineByDistance(dLon, dLat, fAngle, dis,call)
fun getZebraLineByDistance(dLon: Double, dlat: Double , fAngle: Float, dis: Float,call: IResult<MutableList<ZebraLine>>){
Recorder.add("$dLon,$dlat,$fAngle,$dis")
RoadHelper.getInstance()?.getZebraLineByDistance(dLon, dlat, fAngle, dis,call)
}
//计算两线交点
@@ -230,4 +297,81 @@ object MapDataApi {
RoadHelper.getInstance()?.initFileCacheByCity(lon, lat)
}
/**
* 获取城市列表
*/
fun getAllCityCode(call:IResult<ArrayList<CityInfo>>){
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-getAllCityCode")
}
RoadHelper.getInstance()?.getAllCityCode(call)
}
fun getCityCode(lon: Double, lat: Double,call:IResult<Int>){
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-getCityCode")
}
RoadHelper.getInstance()?.getCityCode(lon, lat,call)
}
fun isCacheCity(lon: Double, lat: Double,call:IResult<Boolean>){
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-isCacheCity")
}
RoadHelper.getInstance()?.isCityDataCached(lon, lat,call)
}
/**
* 获取城市数据版本
*/
fun getHdDataVersionByCity(lon: Double,lat: Double,call:IResult<String>){
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-getHdDataVersionByCity:$lon,$lat")
}
RoadHelper.getInstance()?.getHdDataVersionByCity(lon, lat,call)
}
/**
* 取消缓存数据
*/
fun cancelCacheHDData(){
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-cancelCacheHDData:")
}
RoadHelper.getInstance()?.cancelCacheHDData()
}
/**
* 按照城市缓存高精数据
*/
fun cacheHDDataByCity(id: Int, listener: OnHdDataDownByCityListener){
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-cacheHDDataByCity: $id")
}
RoadHelper.getInstance()?.cacheHDDataByCity(id, listener)
}
/**
* 按照经纬度缓存城市数据
*/
fun cacheHDDataByCityByLonLat(lon: Double, lat: Double, listener: OnHdDataDownByCityListener){
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-cacheHDDataByCityByLonLat: $lon,$lat")
}
RoadHelper.getInstance()?.cacheHDDataByCityLonLat(lon, lat, listener)
}
fun addHdDataDownListener(id: Int, onHdDataDownByCityListener: OnHdDataDownByCityListener){
RoadHelper.getInstance()?.addHdDataDownListener(id, onHdDataDownByCityListener)
}
fun removeHdDataDownListener(id: Int){
RoadHelper.getInstance()?.removeHdDataDownListener(id)
}
}

View File

@@ -3,8 +3,8 @@ package com.zhidaoauto.map.sdk.open.deadzone
import android.util.Log
import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.JSONException
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
class DeadZone {
private val TAG = "DeadZone"

View File

@@ -1,8 +1,8 @@
package com.zhidaoauto.map.sdk.open.deadzone
import com.autonavi.nge.map.LonLat
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.proxy.CommonProxy.Companion.getInstance
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import java.util.UUID
class DeadZoneOptions {

View File

@@ -11,6 +11,8 @@ import android.text.TextUtils
import android.util.Log
import androidx.core.app.ActivityCompat
import com.autonavi.nge.map.LonLat
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.data.road.SinglePointRoadInfo
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.inner.proxy.CommonProxy
@@ -19,8 +21,6 @@ import com.zhidaoauto.map.sdk.inner.utils.GisGeomTool
import com.zhidaoauto.map.sdk.inner.utils.MathUtils
import com.zhidaoauto.map.sdk.open.MapAutoApi
import com.zhidaoauto.map.sdk.open.data.MapDataApi
import com.zhidaoauto.map.sdk.open.data.SinglePointRoadInfo
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch

View File

@@ -6,6 +6,7 @@ import android.graphics.BitmapFactory
import android.text.TextUtils
import android.util.Log
import com.autonavi.nge.map.LonLat
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.R
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.abs.IMapController
@@ -13,12 +14,13 @@ import com.zhidaoauto.map.sdk.inner.abs.IMarkerController
import com.zhidaoauto.map.sdk.inner.utils.BitmapUtils
import com.zhidaoauto.map.sdk.inner.utils.Constants
import com.zhidaoauto.map.sdk.inner.utils.TransformUtils
import com.zhidaoauto.map.sdk.open.abs.view.IMapStyleParams
import com.zhidaoauto.map.sdk.open.marker.Marker
import com.zhidaoauto.map.sdk.open.marker.MarkerOptions
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import java.util.concurrent.atomic.AtomicBoolean
class MyLocationStyle(private var mContext:Context?,private var mMarkerController: IMarkerController?,private var mMapController: IMapController?) {
class MyLocationStyle(private var mContext:Context?,private var mMarkerController: IMarkerController?,
private var mMapController: IMapController?, private var mMapStyleParams: IMapStyleParams?) {
val TAG = javaClass.simpleName
companion object {
@@ -45,7 +47,7 @@ class MyLocationStyle(private var mContext:Context?,private var mMarkerControlle
private var mMarker: Marker? = null
private var lastExecuteTime = -1L
private var lastLonLatPoint :LonLatPoint? = null
private var lastLonLatPoint : LonLatPoint? = null
private val zIndex = 1
@@ -55,9 +57,9 @@ class MyLocationStyle(private var mContext:Context?,private var mMarkerControlle
var myLocationIcon: Bitmap? = null
var intervalTime: Long = 1000
// 2D资源
var carResId: Int = R.mipmap.map_custom_self_car_night
var carResId: Int
// 3D夜间资源
var car3DResId: Int = R.raw.car
var car3DResId: Int
var guangquanResId: Int = R.raw.guangquan
var locationPath: String? = null
@@ -68,6 +70,10 @@ class MyLocationStyle(private var mContext:Context?,private var mMarkerControlle
private var animWaitFrame = ANIM_WAIT_FRAME_NIGHT
private var animPeriod = ANIM_PERIOD_NIGHT
init {
car3DResId = mMapStyleParams?.getLocationIcon3DRes() ?: R.raw.car
carResId = mMapStyleParams?.getLocationIconRes() ?: R.mipmap.map_custom_self_car_night
}
fun getSelfMarker():Marker?{
return mMarker

View File

@@ -15,6 +15,7 @@ import android.widget.FrameLayout
import android.widget.TextView
import com.alibaba.fastjson.JSON
import com.autonavi.nge.map.LonLat
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.inner.abs.IMarkerCall
@@ -24,7 +25,6 @@ import com.zhidaoauto.map.sdk.inner.utils.MathUtils
import com.zhidaoauto.map.sdk.open.abs.marker.InfoWindowAdapter
import com.zhidaoauto.map.sdk.open.abs.marker.MarkerAnimationListener
import com.zhidaoauto.map.sdk.open.abs.marker.OnMarkerDragListener
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.tools.MD5Utils
import com.zhidaoauto.map.sdk.open.tools.MapTools
import org.json.JSONArray

View File

@@ -1,10 +1,10 @@
package com.zhidaoauto.map.sdk.open.marker
import android.util.Log
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.utils.GisGeomTool
import com.zhidaoauto.map.sdk.inner.utils.MathUtils
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.view.MapAutoView
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job

View File

@@ -6,13 +6,13 @@ import android.util.Log
import android.view.View
import com.alibaba.fastjson.annotation.JSONField
import com.autonavi.nge.map.LonLat
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.inner.abs.IMarkerCall
import com.zhidaoauto.map.sdk.inner.proxy.CommonProxy
import com.zhidaoauto.map.sdk.inner.utils.OperationUtils
import com.zhidaoauto.map.sdk.open.data.MapDataApi
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.tools.MD5Utils
import java.util.UUID

View File

@@ -1,6 +1,6 @@
package com.zhidaoauto.map.sdk.open.marker
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
class MarkerTranslateAnimation: Animation {
private var lonLatPoints = ArrayList<LonLatPoint>()

View File

@@ -1,8 +1,8 @@
package com.zhidaoauto.map.sdk.open.marker
import com.alibaba.fastjson.JSONObject
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
class MultiPointController {
private val id:String
@@ -20,7 +20,7 @@ class MultiPointController {
}
//批量移动
fun startSmooth(lonlatPoints: List<List<LonLatPoint>>, duration: Int,mapController: IMapController?) {
fun startSmooth(lonlatPoints: List<List<LonLatPoint>>, duration: Int, mapController: IMapController?) {
val data = multiPointOverlayOptions?.data!!
for (i in data.indices) {
if (lonlatPoints[i].size < 2) {

View File

@@ -1,6 +1,7 @@
package com.zhidaoauto.map.sdk.open.nav
import android.location.Location
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.open.nav.abs.AimlessModeListener
import com.zhidaoauto.map.sdk.open.nav.abs.NaviListener
import com.zhidaoauto.map.sdk.open.nav.abs.ParallelRoadListener
@@ -9,7 +10,6 @@ import com.zhidaoauto.map.sdk.open.nav.model.NaviOnlineCarHailingType
import com.zhidaoauto.map.sdk.open.nav.model.NaviPath
import com.zhidaoauto.map.sdk.open.nav.model.NaviSetting
import com.zhidaoauto.map.sdk.open.nav.model.TrafficStatus
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
interface INavi {

View File

@@ -2,6 +2,7 @@ package com.zhidaoauto.map.sdk.open.nav
import android.location.Location
import android.util.Log
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.proxy.CommonProxy
import com.zhidaoauto.map.sdk.open.nav.abs.AimlessModeListener
@@ -12,7 +13,6 @@ import com.zhidaoauto.map.sdk.open.nav.model.NaviOnlineCarHailingType
import com.zhidaoauto.map.sdk.open.nav.model.NaviPath
import com.zhidaoauto.map.sdk.open.nav.model.NaviSetting
import com.zhidaoauto.map.sdk.open.nav.model.TrafficStatus
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
class NavAutoHelper : INavi {

View File

@@ -1,6 +1,6 @@
package com.zhidaoauto.map.sdk.open.nav.model
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
/*
* 拥堵道路link的拥堵信息

View File

@@ -1,6 +1,7 @@
package com.zhidaoauto.map.sdk.open.nav.model
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
/*
* 导航段信息类
*/

View File

@@ -1,6 +1,7 @@
package com.zhidaoauto.map.sdk.open.nav.model
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
/*
* 道路link类
*/

View File

@@ -1,7 +1,7 @@
package com.zhidaoauto.map.sdk.open.nav.model
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.open.camera.LatLngBounds
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
class NaviPath {
var allLength = 0 //当前导航路线的总长度。

View File

@@ -1,6 +1,6 @@
package com.zhidaoauto.map.sdk.open.nav.model
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
class NaviRouteGuideGroup {

View File

@@ -1,6 +1,6 @@
package com.zhidaoauto.map.sdk.open.nav.model
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
class NaviStep {
//路段长度

View File

@@ -1,6 +1,6 @@
package com.zhidaoauto.map.sdk.open.nav.model
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
class ServiceAreaInfo {
var remainDist = 0 //当前位置到服务区的距离

View File

@@ -2,13 +2,13 @@ package com.zhidaoauto.map.sdk.open.nav.view
import android.content.Context
import android.graphics.Bitmap
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.open.marker.BitmapDescriptor
import com.zhidaoauto.map.sdk.open.marker.Marker
import com.zhidaoauto.map.sdk.open.nav.model.NaviPath
import com.zhidaoauto.map.sdk.open.nav.model.RouteOverlayOptions
import com.zhidaoauto.map.sdk.open.poyline.Polyline
import com.zhidaoauto.map.sdk.open.poyline.PolylineOptions
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
class RouteOverLay{
private var startMarker: Marker? = null

View File

@@ -122,23 +122,17 @@ class TmcBarView : View {
////计算tmcBar在绘制过程中每一小段的长度
val itemHeight = Math.round(trafficStatus.getLength() * rateDistanceToViewHeight * 100.0f) * 0.01f
realDistanceSum += itemHeight
getPaintInColor(getColor(trafficStatus.getStatus()))?.let {
canvas.drawRect(0.0f, realDistanceSum - itemHeight, width.toFloat(), realDistanceSum, it)
}
canvas.drawRect(0.0f, realDistanceSum - itemHeight, width.toFloat(), realDistanceSum, getPaintInColor(getColor(trafficStatus.getStatus())))
--tmcBarLength
}
tmcBarLength = height + (mCarHeight shr 1)
//补全光柱图,使用颜色==第一段的颜色
if (realDistanceSum < tmcBarLength.toFloat()) {
getPaintInColor(getColor((mTmcBarItems!![0]).getStatus()))?.let {
canvas.drawRect(0.0f, realDistanceSum, width.toFloat(), tmcBarLength.toFloat(), it)
}
canvas.drawRect(0.0f, realDistanceSum, width.toFloat(), tmcBarLength.toFloat(), getPaintInColor(getColor((mTmcBarItems!![0]).getStatus())))
}
//补全光柱图,使用颜色==第一段的颜色
if (this.height.toFloat() > mCursorPos) {
getPaintInColor(getColor(-1))?.let {
canvas.drawRect(0.0f, mCursorPos + (mCarHeight shr 1).toFloat(), width.toFloat(), this.height.toFloat(), it)
}
canvas.drawRect(0.0f, mCursorPos + (mCarHeight shr 1).toFloat(), width.toFloat(), this.height.toFloat(), getPaintInColor(getColor(-1)))
}
if (mTmcBarListener != null) {
mTmcBarListener!!.dismissBottomTag()

View File

@@ -12,13 +12,13 @@ import kotlinx.android.synthetic.main.view_trafficbar.view.tmcBarTxt
import kotlinx.android.synthetic.main.view_trafficbar.view.tmcBarView
class TrafficProgressBar : FrameLayout {
constructor(context: Context, attrs: AttributeSet?, defStyle: Int) : super(context, attrs, defStyle) {
constructor(context: Context?, attrs: AttributeSet?, defStyle: Int) : super(context, attrs, defStyle) {
init()
}
constructor(context: Context) : super(context) {
constructor(context: Context?) : super(context) {
init()
}
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
init()
}

View File

@@ -1,9 +1,9 @@
package com.zhidaoauto.map.sdk.open.navi
import com.zhidao.map.net.api.Result
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.controller.CommonController
import com.zhidaoauto.map.sdk.open.abs.navi.INaviResult
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch

View File

@@ -1,7 +1,7 @@
package com.zhidaoauto.map.sdk.open.polygon
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
class Polygon3D {

View File

@@ -1,6 +1,6 @@
package com.zhidaoauto.map.sdk.open.polygon
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
import java.util.UUID
class Polygon3DOption {

View File

@@ -2,8 +2,8 @@ package com.zhidaoauto.map.sdk.open.poyline
import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.JSONException
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
class Polyline {
private var id: String = ""

View File

@@ -4,11 +4,10 @@ import android.graphics.Bitmap
import android.util.Log
import com.alibaba.fastjson.annotation.JSONField
import com.autonavi.nge.map.LonLat
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.inner.proxy.CommonProxy.Companion.getInstance
import com.zhidaoauto.map.sdk.open.MapAutoApi.addImagetoImageManager
import com.zhidaoauto.map.sdk.open.data.MapDataApi
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.tools.BitmapTools.bitmapToByteArray
import java.util.UUID
@@ -255,7 +254,7 @@ class PolylineOptions {
fun customTexture(bitmap: Bitmap): PolylineOptions {
customTexture = bitmap
val bitmapArr = bitmapToByteArray(bitmap)
addImagetoImageManager("thickline", bitmapArr, bitmap.width, bitmap.height,mMapController)
mMapController?.addImage("thickline", bitmapArr, bitmap.width, bitmap.height)
return this
}

View File

@@ -1,5 +1,7 @@
package com.zhidaoauto.map.sdk.open.query
import com.zhidaoauto.map.data.point.LonLatPoint
class GeocodeAddress{
var poiId: String? = null

View File

@@ -1,5 +1,7 @@
package com.zhidaoauto.map.sdk.open.query
import com.zhidaoauto.map.data.point.LonLatPoint
class InputtipsQuery(val keyword: String, val city: String) : Cloneable {
var cityLimit = false
var type: String? = null

View File

@@ -1,5 +1,7 @@
package com.zhidaoauto.map.sdk.open.query
import com.zhidaoauto.map.data.point.LonLatPoint
class PoiItem {
var poiId: String? = null
var tel: String? = null

View File

@@ -1,6 +1,7 @@
package com.zhidaoauto.map.sdk.open.query
import android.util.Log
import com.zhidaoauto.map.data.point.LonLatPoint
class Query {

View File

@@ -1,5 +1,7 @@
package com.zhidaoauto.map.sdk.open.query
import com.zhidaoauto.map.data.point.LonLatPoint
class RegeocodeQuery(lonLatPoint: LonLatPoint?, radius: Float) {
var lonLatPoint: LonLatPoint? = null
var radius = 1000.0f

View File

@@ -1,5 +1,7 @@
package com.zhidaoauto.map.sdk.open.query
import com.zhidaoauto.map.data.point.LonLatPoint
class SubPoiItem {
var poiId: String? = null
var title: String? = null

View File

@@ -1,5 +1,6 @@
package com.zhidaoauto.map.sdk.open.query
import com.zhidaoauto.map.data.point.LonLatPoint
import java.io.Serializable
class Tip : Serializable {

View File

@@ -3,12 +3,12 @@ package com.zhidaoauto.map.sdk.open.tools
import android.graphics.Point
import android.util.Log
import com.autonavi.nge.map.LonLat
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.CompileConfig.DEBUG
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.inner.proxy.CommonProxy
import com.zhidaoauto.map.sdk.inner.utils.MathUtils
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import kotlin.math.absoluteValue
object MapTools {

View File

@@ -7,6 +7,8 @@ import android.text.TextUtils
import android.util.Log
import android.widget.TextView
import com.autonavi.nge.NLog
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.data.routeinfo.RoadInfo
import com.zhidaoauto.map.sdk.R
import com.zhidaoauto.map.sdk.inner.common.ConstantExt
import com.zhidaoauto.map.sdk.inner.controller.CommonController
@@ -30,13 +32,7 @@ import com.zhidaoauto.map.sdk.open.polygon.Polygon3DHelper
import com.zhidaoauto.map.sdk.open.polygon.Polygon3DOption
import com.zhidaoauto.map.sdk.open.poyline.Polyline
import com.zhidaoauto.map.sdk.open.poyline.PolylineOptions
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.road.CenterLine
import com.zhidaoauto.map.sdk.open.road.RoadCross
import com.zhidaoauto.map.sdk.open.road.RoadRectInfos
import com.zhidaoauto.map.sdk.open.road.StopLine
import com.zhidaoauto.map.sdk.open.road.ZebraLine
import com.zhidaoauto.map.sdk.open.routeinfo.RoadInfo
import com.zhidaoauto.map.data.road.*
import com.zhidaoauto.map.sdk.open.view.MapAutoView
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -1217,7 +1213,7 @@ class TaskManager {
IResult<Int> {
override fun result(code: Int, id: Int?) {
id?.let {
mapAutoView.getMapAutoViewHelper()?.cacheHDDataByCity(id, object :
MapDataApi.cacheHDDataByCity(id, object :
OnHdDataDownByCityListener {
override fun onMapHDDataCacheProgressByCity(id: Int, progress: Double) {
Log.d("TAG", "id: ${id}, progerss: ${progress}")
@@ -1240,7 +1236,7 @@ class TaskManager {
IResult<Int> {
override fun result(code: Int, id: Int?) {
id?.let {
mapAutoView.getMapAutoViewHelper()?.cacheHDDataByCity(id, object :
MapDataApi.cacheHDDataByCity(id, object :
OnHdDataDownByCityListener {
override fun onMapHDDataCacheProgressByCity(id: Int, progress: Double) {
CommonController.instance.scope?.launch(Dispatchers.Main) {

View File

@@ -1,6 +1,6 @@
package com.zhidaoauto.map.sdk.open.tools
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.data.point.LonLatPoint
class VisibleRegion {
var leftTopPoint: LonLatPoint? = null

View File

@@ -9,6 +9,7 @@ import android.util.Log
import android.widget.FrameLayout
import com.autonavi.nge.map.*
import com.zhidao.map.net.api.Result
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.BuildConfig
import com.zhidaoauto.map.sdk.R
import com.zhidaoauto.map.sdk.inner.CompileConfig
@@ -36,10 +37,7 @@ import com.zhidaoauto.map.sdk.open.location.LonLatPointListener
import com.zhidaoauto.map.sdk.open.location.MogoLocation
import com.zhidaoauto.map.sdk.open.marker.MarkerController
import com.zhidaoauto.map.sdk.open.marker.OnMarkClickListener
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.road.CenterLine
import com.zhidaoauto.map.sdk.open.road.RoadCross
import com.zhidaoauto.map.sdk.open.road.StopLine
import com.zhidaoauto.map.data.road.*
import com.zhidaoauto.map.sdk.open.view.MapStyleParams.Companion.MAP_PERSPECTIVE_3D
import com.zhidaoauto.map.sdk.open.weather.WeatherRepository
import com.zhidaoauto.map.sdk.open.weather.WeatherType
@@ -130,7 +128,7 @@ open class MapAutoView : FrameLayout, LonLatPointListener, ITraffic,ILockLocatio
initView()
}
constructor(context: Context,mapStyleParams: MapStyleParams) : super(context) {
constructor(context: Context,mapStyleParams: IMapStyleParams) : super(context) {
this.mMapStyleParams = mapStyleParams
initView()
}
@@ -177,6 +175,8 @@ open class MapAutoView : FrameLayout, LonLatPointListener, ITraffic,ILockLocatio
val defaultPerspective = typedArray.getInt(R.styleable.MapAutoView_default_perspective, ConstantExt.MAP_STYLE_VR_ANGLE_MIDDLE)
val isSkyBoxEnable = typedArray.getBoolean(R.styleable.MapAutoView_isSkyBoxEnable, false)
val isWeatherEnable = typedArray.getBoolean(R.styleable.MapAutoView_isWeatherEnable, true)
val locationIcon3DRes = typedArray.getResourceId(R.styleable.MapAutoView_locationIcon3DRes, R.raw.car)
val locationIconRes = typedArray.getResourceId(R.styleable.MapAutoView_locationIconRes, R.mipmap.map_custom_self_car_night)
typedArray.recycle()
val mapStyleParams = MapStyleParams()
mapStyleParams.setZoom(zoom)
@@ -196,6 +196,8 @@ open class MapAutoView : FrameLayout, LonLatPointListener, ITraffic,ILockLocatio
mapStyleParams.setDefaultPerspective(defaultPerspective)
mapStyleParams.setIsSkyBoxEnable(isSkyBoxEnable)
mapStyleParams.setIsWeatherEnable(isWeatherEnable)
mapStyleParams.setLocationIconRes(locationIconRes)
mapStyleParams.setLocationIcon3DRes(locationIcon3DRes)
this.mMapStyleParams = mapStyleParams
}
@@ -324,7 +326,7 @@ open class MapAutoView : FrameLayout, LonLatPointListener, ITraffic,ILockLocatio
mLocationView = LocationHelper(context, mMarkerController, mMapController)
mLocationView = LocationHelper(context, mMarkerController, mMapController,mMapStyleParams)
mMapController?.setLocalView(mLocationView)
it.setMapController(mMapController)
@@ -898,20 +900,6 @@ open class MapAutoView : FrameLayout, LonLatPointListener, ITraffic,ILockLocatio
mEventController?.removeRoadInfoListener(onRoadInfoListener)
}
fun setOnHdDataDownListener(id: Int,onHdDataDownByCityListener: OnHdDataDownByCityListener){
mMapController?.getClerk()?.add()
if(mEventController == null){
mEventController = MapEventController()
}
onHdDataDownByCityListener?.let {
mEventController?.addHdDataDownListener(id, it)
}
}
fun removeHdDataDownListener(id: Int){
mMapController?.getClerk()?.add()
mEventController?.removeHdDataDownListener(id)
}
fun setOnRoamStatusListener(onRoamStatusListener: OnRoamStatusListener){
mMapController?.getClerk()?.add()

View File

@@ -2,15 +2,15 @@ package com.zhidaoauto.map.sdk.open.view
import android.util.Log
import com.autonavi.nge.map.*
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.sdk.inner.CompileConfig
import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.inner.abs.IMarkerController
import com.zhidaoauto.map.sdk.inner.common.ConstantExt
import com.zhidaoauto.map.sdk.inner.panel.PanelManager
import com.zhidaoauto.map.sdk.inner.proxy.CommonProxy
import com.zhidaoauto.map.sdk.inner.road.RoadHelper
import com.zhidaoauto.map.sdk.inner.utils.TransformUtils
import com.zhidaoauto.map.sdk.open.MapAutoApi
import com.zhidaoauto.map.sdk.open.abs.IResult
import com.zhidaoauto.map.sdk.open.abs.OnHdDataDownByCityListener
import com.zhidaoauto.map.sdk.open.abs.marker.InfoWindowAdapter
import com.zhidaoauto.map.sdk.open.camera.CameraPosition
@@ -18,7 +18,6 @@ import com.zhidaoauto.map.sdk.open.camera.CameraUpdate
import com.zhidaoauto.map.sdk.open.camera.MapCameraMessage
import com.zhidaoauto.map.sdk.open.circle.CircleController
import com.zhidaoauto.map.sdk.open.circle.CircleOptions
import com.zhidaoauto.map.sdk.open.data.CityInfo
import com.zhidaoauto.map.sdk.open.deadzone.DeadZone
import com.zhidaoauto.map.sdk.open.deadzone.DeadZoneOptions
import com.zhidaoauto.map.sdk.open.exception.NotImplementException
@@ -27,7 +26,6 @@ import com.zhidaoauto.map.sdk.open.location.MyLocationStyle
import com.zhidaoauto.map.sdk.open.marker.*
import com.zhidaoauto.map.sdk.open.poyline.Polyline
import com.zhidaoauto.map.sdk.open.poyline.PolylineOptions
import com.zhidaoauto.map.sdk.open.query.LonLatPoint
import com.zhidaoauto.map.sdk.open.tools.MapTools
import com.zhidaoauto.map.sdk.open.weather.WeatherResult
@@ -1262,77 +1260,8 @@ class MapAutoViewHelper(mapAutoView: MapAutoView) {
mMapAutoView.getMapController()?.setRoamTrajectory(travel)
}
/**
* 按照城市缓存高精数据
*/
fun cacheHDDataByCity(id: Int, listener: OnHdDataDownByCityListener){
mMapAutoView.getClerk()?.add("$id")
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-cacheHDDataByCity: $id")
}
mMapAutoView.getMapController()?.cacheHDDataByCity(id, listener)
}
/**
* 按照经纬度缓存城市数据
*/
fun cacheHDDataByCityByLonLat(lon: Double, lat: Double, listener: OnHdDataDownByCityListener){
mMapAutoView.getClerk()?.add("$lon,$lat")
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-cacheHDDataByCityByLonLat: $lon,$lat")
}
mMapAutoView.getMapController()?.cacheHDDataByCityLonLat(lon, lat, listener)
}
/**
* 获取城市列表
*/
fun getAllCityCode(call:IResult<ArrayList<CityInfo>>){
mMapAutoView.getClerk()?.add()
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-getAllCityCode")
}
RoadHelper.getInstance()?.getAllCityCode(call)
}
fun getCityCode(lon: Double, lat: Double,call:IResult<Int>){
mMapAutoView.getClerk()?.add()
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-getCityCode")
}
RoadHelper.getInstance()?.getCityCode(lon, lat,call)
}
fun isCacheCity(lon: Double, lat: Double,call:IResult<Boolean>){
mMapAutoView.getClerk()?.add()
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-isCacheCity")
}
RoadHelper.getInstance()?.isCityDataCached(lon, lat,call)
}
/**
* 获取城市数据版本
*/
fun getHdDataVersionByCity(lon: Double,lat: Double,call:IResult<String>){
mMapAutoView.getClerk()?.add("$lon,$lat")
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-getHdDataVersionByCity:$lon,$lat")
}
RoadHelper.getInstance()?.getHdDataVersionByCity(lon, lat,call)
}
/**
* 取消缓存数据
*/
fun cancelCacheHDData(){
mMapAutoView.getClerk()?.add()
if(CompileConfig.DEBUG){
Log.i(TAG, "cacheop-cancelCacheHDData:")
}
mMapAutoView.getMapController()?.cancelCacheHDData()
}
/**
* 设置锁车后的恢复时间
@@ -1422,4 +1351,14 @@ class MapAutoViewHelper(mapAutoView: MapAutoView) {
}
mMapAutoView.getMapController()?.setFogMode(isEnable)
}
fun addImagetoImageManager(imageKey: String, imageByteArray: ByteArray, width: Int, height: Int):Int?{
return mMapAutoView.getMapController()?.addImage(
imageKey,
imageByteArray,
width,
height
)
}
}

View File

@@ -1,5 +1,6 @@
package com.zhidaoauto.map.sdk.open.view
import com.zhidaoauto.map.sdk.R
import com.zhidaoauto.map.sdk.inner.common.ConstantExt
import com.zhidaoauto.map.sdk.inner.map.MapController
import com.zhidaoauto.map.sdk.open.HDTypes
@@ -20,6 +21,9 @@ class MapStyleParams: IMapStyleParams {
private var isAutoSwitch: Boolean = false
private var isAutoLocation = true
private var mLocationIconRes = R.mipmap.map_custom_self_car
private var mLocationIcon3DRes = R.raw.car
//显示高精地图元素
private var hdVisibileArray = intArrayOf(
HDTypes.DIVIDER.type,
@@ -321,6 +325,24 @@ class MapStyleParams: IMapStyleParams {
return isWeatherEnable
}
override fun setLocationIcon3DRes(resId: Int): MapStyleParams {
mLocationIcon3DRes = resId
return this
}
override fun getLocationIcon3DRes(): Int {
return mLocationIcon3DRes
}
override fun setLocationIconRes(resId: Int): MapStyleParams {
mLocationIconRes = resId
return this
}
override fun getLocationIconRes(): Int {
return mLocationIconRes
}
override fun toString(): String {
return "MapStyleParams( zoom=$zoom, carPosition=$carPosition, isAutoSwitch=$isAutoSwitch, isAutoLocation=$isAutoLocation, hdVisibileArray=${hdVisibileArray.contentToString()}, styleMode=$styleMode, perspectiveMode=$perspectiveMode, vrPerspectiveMode=$vrPerspectiveMode, vrAngleMode=$vrAngleMode, isSwitchViewAngle=$isSwitchViewAngle, vrEyeHeight=$vrEyeHeight, zoomVal=$zoomVal, minDistanceForPosition=$minDistanceForPosition, isShadowEnable=$isShadowEnable, styleName='$styleName')"