diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1b511f962f..55e1a2591e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Fri Sep 22 11:53:55 CST 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/libraries/mapmodule/src/main/java/com/autonavi/nge/MapBox.kt b/libraries/mapmodule/src/main/java/com/autonavi/nge/MapBox.kt index 984e8ffb24..fb65e6e3af 100644 --- a/libraries/mapmodule/src/main/java/com/autonavi/nge/MapBox.kt +++ b/libraries/mapmodule/src/main/java/com/autonavi/nge/MapBox.kt @@ -62,6 +62,8 @@ class MapBox { external fun cancelTask() external fun llaRelease() + external fun isInRoadSideFenceRegion(lon: Double, lat: Double, isCancel: Boolean = false) + fun resultCallbackByteStream(key: String?, result: ByteArray?) { if (DEBUG) { // Log.d(TAG, "roadop--resultCallbackDouble: " +"key:" + key + " + " result:"+ result.length); diff --git a/libraries/mapmodule/src/main/java/com/autonavi/nge/dm/NavigationCore.java b/libraries/mapmodule/src/main/java/com/autonavi/nge/dm/NavigationCore.java index 1eee05af19..3a7aef377a 100644 --- a/libraries/mapmodule/src/main/java/com/autonavi/nge/dm/NavigationCore.java +++ b/libraries/mapmodule/src/main/java/com/autonavi/nge/dm/NavigationCore.java @@ -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; diff --git a/libraries/mapmodule/src/main/java/com/autonavi/nge/dm/SharedMemoryService.java b/libraries/mapmodule/src/main/java/com/autonavi/nge/dm/SharedMemoryService.java index 40597cc394..58c3ccbd81 100644 --- a/libraries/mapmodule/src/main/java/com/autonavi/nge/dm/SharedMemoryService.java +++ b/libraries/mapmodule/src/main/java/com/autonavi/nge/dm/SharedMemoryService.java @@ -50,7 +50,6 @@ public class SharedMemoryService { private void init(Context context) { - HDMapProvider.setDataFileSource(MapHelper.INSTANCE.getMMapParams().getDataFileSource()); HDMapProvider.setDataRedisSource(MapHelper.INSTANCE.getMMapParams().getDataRedisFileSource()); if (!TextUtils.isEmpty(MapHelper.INSTANCE.getMMapParams().getHdMapPath())) { HDMapProvider.setDataDir(MapHelper.INSTANCE.getMMapParams().getHdMapPath()); @@ -65,6 +64,7 @@ public class SharedMemoryService { Log.i(TAG, "autoop-dir:" + dir+",SharedMemory--cachePath:"+cachePath); } initSharedMemory_Native(dir,MapHelper.INSTANCE.getMMapParams().getStyleDir(),cachePath,MapHelper.INSTANCE.getMMapParams().getQZoneFilterArray()); + HDMapProvider.setDataFileSource(MapHelper.INSTANCE.getMMapParams().getDataFileSource()); } diff --git a/libraries/mapmodule/src/main/java/com/autonavi/nge/guidance/GuidanceProvider.java b/libraries/mapmodule/src/main/java/com/autonavi/nge/guidance/GuidanceProvider.java index 92cf6d79de..bc6c0d1985 100644 --- a/libraries/mapmodule/src/main/java/com/autonavi/nge/guidance/GuidanceProvider.java +++ b/libraries/mapmodule/src/main/java/com/autonavi/nge/guidance/GuidanceProvider.java @@ -1,4 +1,4 @@ -//package com.autonavi.nge.guidance; +package com.autonavi.nge.guidance;//package com.autonavi.nge.guidance; // //import android.util.Log; // diff --git a/libraries/mapmodule/src/main/java/com/autonavi/nge/map/MapView.kt b/libraries/mapmodule/src/main/java/com/autonavi/nge/map/MapView.kt index 5f4f329e05..8f3cc0f4f0 100644 --- a/libraries/mapmodule/src/main/java/com/autonavi/nge/map/MapView.kt +++ b/libraries/mapmodule/src/main/java/com/autonavi/nge/map/MapView.kt @@ -713,10 +713,10 @@ class MapView(context: Context, private val mMapStyleParams: IMapStyleParams, pr // setStyleDir("sdcard/shmdata/style") val styleMode = mMapStyleParams.getStyleMode() val dir = Constant.nDSDataPath - mMapEngine.setIsEnableShadow(mMapStyleParams.isShadowEnable()) if(!loadP(dir)){ return } + mMapEngine.setIsEnableShadow(mMapStyleParams.isShadowEnable()) loadOverCallbak() if(mMapStyleParams.getHDVisibileArray().isNotEmpty()){ mMapEngine.setHDTypeVisibile(mMapStyleParams.getHDVisibileArray()) @@ -975,7 +975,7 @@ class MapView(context: Context, private val mMapStyleParams: IMapStyleParams, pr //Marker Event markerEvent(e) - if (mEventController?.isMarkClickListenerListEmpty() == false) { + if (mEventController?.isMapClickListenerListEmpty() == false) { val x = e.x.toInt() val y = e.y.toInt() val latLonPoint = MapTools.fromScreenLocation(Point(x, y),mMapController) diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/abs/IEventController.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/abs/IEventController.kt index 2e77a262a3..256c955d46 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/abs/IEventController.kt +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/abs/IEventController.kt @@ -16,6 +16,7 @@ import com.zhidaoauto.map.sdk.open.abs.OnMapTouchListener import com.zhidaoauto.map.sdk.open.abs.OnMapViewVisualAngleChangeListener import com.zhidaoauto.map.sdk.open.abs.OnRenderListener import com.zhidaoauto.map.sdk.open.abs.OnRoadInfoListener +import com.zhidaoauto.map.sdk.open.abs.OnRoadSideFenceRegionListener import com.zhidaoauto.map.sdk.open.abs.OnRoamStatusListener import com.zhidaoauto.map.sdk.open.abs.OnScrollListener import com.zhidaoauto.map.sdk.open.abs.log.ILog @@ -84,4 +85,8 @@ interface IEventController { fun removeRoamStatusListener(onRoamStatusListener: OnRoamStatusListener) fun dispatchRoamStatusListener(status: Int, msg: String) + + fun addRoadSideFenceRegionListener(onRoadSideFenceRegionListener: OnRoadSideFenceRegionListener) + fun removeRoadSideFenceRegionListener(onRoadSideFenceRegionListener: OnRoadSideFenceRegionListener) + fun dispatchRoadSideFenceRegionListener(status: Int) } \ No newline at end of file diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/byteh/PayloadDecoder.java b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/byteh/PayloadDecoder.java index baba1f3061..245ce1c4f4 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/byteh/PayloadDecoder.java +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/byteh/PayloadDecoder.java @@ -2,7 +2,6 @@ package com.zhidaoauto.map.sdk.inner.byteh; import java.lang.reflect.Field; import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; import java.util.List; import io.netty.buffer.ByteBuf; @@ -41,7 +40,7 @@ public class PayloadDecoder { case "java.lang.Character": case "char": - CharSequence charSequence = buffer.readCharSequence(fieldWrapper.getCodecProprety().length(), StandardCharsets.UTF_8); + CharSequence charSequence = buffer.readCharSequence(fieldWrapper.getCodecProprety().length(), Charset.forName("UTF-8")); field.set(instance, charSequence); break; case "java.lang.Byte": @@ -75,7 +74,7 @@ public class PayloadDecoder { field.set(instance, readDouble); break; case "java.lang.String": - String readString = buffer.readCharSequence(fieldWrapper.getCodecProprety().length(), StandardCharsets.UTF_8).toString(); + String readString = buffer.readCharSequence(fieldWrapper.getCodecProprety().length(), Charset.forName("UTF-8")).toString(); field.set(instance, readString); break; default: diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/byteh/PayloadEncoder.java b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/byteh/PayloadEncoder.java index 0d2bd9d0d8..6f3f27d43e 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/byteh/PayloadEncoder.java +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/byteh/PayloadEncoder.java @@ -3,7 +3,7 @@ package com.zhidaoauto.map.sdk.inner.byteh; import com.autonavi.nge.map.LonLat; import java.lang.reflect.Field; -import java.nio.charset.StandardCharsets; +import java.nio.charset.Charset; import java.util.List; import io.netty.buffer.ByteBuf; @@ -13,7 +13,7 @@ public class PayloadEncoder { public static byte[] getPayload(T command) { List fieldWrapperList = command.getFieldWrapperList(); ByteBuf buffer = Unpooled.buffer(); - for (FieldWrapper fieldWrapper : fieldWrapperList) { + for(FieldWrapper fieldWrapper :fieldWrapperList){ write2ByteBuf(fieldWrapper, command, buffer); } return buffer.array(); @@ -36,9 +36,6 @@ public class PayloadEncoder { } catch (IllegalAccessException e) { new RuntimeException("反射获取值失败,filed:" + field.getName(), e); } - if (value == null) { - return; - } switch (typeName) { case "com.autonavi.nge.map.LonLat": LonLat lonLat = (LonLat) value; @@ -53,9 +50,7 @@ public class PayloadEncoder { case "java.lang.Character": case "kotlin.Character": case "char": - case "java.lang.String": - case "kotlin.String": - buffer.writeCharSequence((CharSequence) value, StandardCharsets.UTF_8); + buffer.writeCharSequence((CharSequence) value, Charset.forName("UTF-8")); break; case "java.lang.Byte": case "kotlin.Byte": @@ -87,6 +82,10 @@ public class PayloadEncoder { case "double": buffer.writeDouble((double) value); break; + case "java.lang.String": + case "kotlin.String": + buffer.writeCharSequence((CharSequence) value, Charset.forName("UTF-8")); + break; default: throw new RuntimeException(typeName + "不支持,bug"); } diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/controller/MapEventController.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/controller/MapEventController.kt index d794c427f9..6c5aee2306 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/controller/MapEventController.kt +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/controller/MapEventController.kt @@ -18,6 +18,7 @@ import com.zhidaoauto.map.sdk.open.abs.OnMapTouchListener import com.zhidaoauto.map.sdk.open.abs.OnMapViewVisualAngleChangeListener import com.zhidaoauto.map.sdk.open.abs.OnRenderListener import com.zhidaoauto.map.sdk.open.abs.OnRoadInfoListener +import com.zhidaoauto.map.sdk.open.abs.OnRoadSideFenceRegionListener import com.zhidaoauto.map.sdk.open.abs.OnRoamStatusListener import com.zhidaoauto.map.sdk.open.abs.OnScrollListener import com.zhidaoauto.map.sdk.open.abs.log.ILog @@ -46,6 +47,7 @@ class MapEventController(): IEventController { private var mRoadInfoListenerList : ArrayList? = null private var mLogListenerList : ArrayList? = null private var mRoamStatusListenerList: ArrayList? = null + private var mRoamRegionListenerList: ArrayList? = null override fun exit(){ @@ -85,6 +87,8 @@ class MapEventController(): IEventController { mLogListenerList = null mRoamStatusListenerList?.clear() mRoamStatusListenerList = null + mRoamRegionListenerList?.clear() + mRoamRegionListenerList = null } override fun addCameraChangeListener(cameraChangeListener: OnCameraChangeListener){ @@ -539,4 +543,27 @@ class MapEventController(): IEventController { } } } + + override fun addRoadSideFenceRegionListener(onRoadSideFenceRegionListener: OnRoadSideFenceRegionListener) { + if(mRoamRegionListenerList == null){ + mRoamRegionListenerList = ArrayList() + } + if(!mRoamRegionListenerList!!.contains(onRoadSideFenceRegionListener)) { + mRoamRegionListenerList?.add(onRoadSideFenceRegionListener) + } + } + + override fun removeRoadSideFenceRegionListener(onRoadSideFenceRegionListener: OnRoadSideFenceRegionListener) { + mRoamRegionListenerList?.let { + it.remove(onRoadSideFenceRegionListener) + } + } + + override fun dispatchRoadSideFenceRegionListener(status: Int) { + mRoamRegionListenerList?.let { + for(listener in it){ + listener.isInRoadSideFenceRegion(status) + } + } + } } \ No newline at end of file diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/map/MapController.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/map/MapController.kt index 6087b945b2..be37e8c49a 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/map/MapController.kt +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/map/MapController.kt @@ -1025,7 +1025,7 @@ class MapController(private var context: Context?, private val mMapView: IMapVie val data = polylineOptions.lonLats var polyline: Polyline? = null try { - if (data.size <= 1) { + if (data == null || data.size <= 1) { throw RuntimeException("传入的坐标数必须大于1") } val strOptionsJson = JSON.toJSONString(polylineOptions) @@ -1054,7 +1054,7 @@ class MapController(private var context: Context?, private val mMapView: IMapVie val colorSize = colorValues?.size ?: 0 var polyline: Polyline? = null try { - if (data.size <= 1) { + if (data == null || data.size <= 1) { throw RuntimeException("传入的坐标数必须大于1") } if (polylineOptions.getIsGradient() && colorSize > data.size) { @@ -1090,7 +1090,7 @@ class MapController(private var context: Context?, private val mMapView: IMapVie val data = deadZoneOptions.getPosition() var deadZone: DeadZone? = null try { - if (data.size <= 1) { + if (data == null || data.size <= 1) { throw RuntimeException("传入的坐标数必须大于1") } val strOptionsJson = JSON.toJSONString(deadZoneOptions) diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/road/RoadHelper.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/road/RoadHelper.kt index 674c49a4d6..848c225cc4 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/road/RoadHelper.kt +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/road/RoadHelper.kt @@ -804,6 +804,9 @@ class RoadHelper private constructor() { mapBox.llaGetCrossRoadById(tileId,id) } + + + fun initFileCacheByCity( lon :Double, lat: Double){ mapBox.initFileCacheByCity(lon, lat) } @@ -1228,4 +1231,35 @@ class RoadHelper private constructor() { } + fun isInRoadSideFenceRegion(lon: Double, lat: Double, call: IResult){ + val time = System.currentTimeMillis() + val key = "isInRoadSideFenceRegion_${lon.toTenDecimalsStr()}_${lat.toTenDecimalsStr()}_${RoadResultController.CANCELTAG}false" + RoadResultController.instance.addRoadResultListener(key,object :IRoadData{ + + override fun result(code: Int, result: ByteArray?) { + + if (CompileConfig.DEBUG) { + Log.d(TAG, "roadop--isInRoadSideFenceRegion-costTime${System.currentTimeMillis()-time}") + Log.d(TAG, "roadop--isInRoadSideFenceRegion-${key}-code:${code},result: $result") + } + if (result?.isEmpty() == true){ + call.result(1,0) + return + } + result?.let { + val buf = ByteBufferHelper.bytes2ByteBuffer(result) + + buf?.let { + call.result(code, buf.int) + return + } + } + call.result(code,0) + } + }) + mapBox.isInRoadSideFenceRegion(lon, lat) + } + + + } \ No newline at end of file diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/utils/AMapUtils.java b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/utils/AMapUtils.java index aee75434eb..a8ed048fc9 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/utils/AMapUtils.java +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/utils/AMapUtils.java @@ -83,6 +83,8 @@ public class AMapUtils { /** * 是否有GPS + * @param context + * @return */ public static boolean hasGPSDevice(Context context) { final LocationManager mgr = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); @@ -90,7 +92,10 @@ public class AMapUtils { return false; } final List providers = mgr.getAllProviders(); - return providers != null && providers.contains(LocationManager.GPS_PROVIDER); + if (providers == null) { + return false; + } + return providers.contains(LocationManager.GPS_PROVIDER); } } \ No newline at end of file diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/utils/MainInfo.java b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/utils/MainInfo.java index 540f62aa69..c3817df850 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/utils/MainInfo.java +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/inner/utils/MainInfo.java @@ -33,9 +33,11 @@ public class MainInfo { if (null == dir) { return; } - try(FileWriter fw = new FileWriter((dir + "log.txt"), true)) { + try { + FileWriter fw = new FileWriter((dir + "log.txt"), true); String date = dateFormat.format(new Date()); fw.write(date + " " + log + "\r\n"); + fw.close(); } catch (Exception ex) { } } @@ -48,8 +50,10 @@ public class MainInfo { if (null == dir) { return; } - try(FileWriter fw = new FileWriter((dir + "log.txt"), true)) { + try { + FileWriter fw = new FileWriter((dir + "log.txt"), true); e.printStackTrace(new PrintWriter(fw)); + fw.close(); } catch (Exception ex) { } } diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/abs/OnRoadSideFenceRegionListener.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/abs/OnRoadSideFenceRegionListener.kt new file mode 100644 index 0000000000..6cde2327b0 --- /dev/null +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/abs/OnRoadSideFenceRegionListener.kt @@ -0,0 +1,5 @@ +package com.zhidaoauto.map.sdk.open.abs + +interface OnRoadSideFenceRegionListener { + fun isInRoadSideFenceRegion(status: Int) +} \ No newline at end of file diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/data/MapDataApi.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/data/MapDataApi.kt index 745272b89b..c920c014a7 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/data/MapDataApi.kt +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/data/MapDataApi.kt @@ -389,6 +389,10 @@ object MapDataApi { RoadHelper.getInstance()?.removeHdDataDownListener(id) } + fun isInRoadSideFenceRegion(lon: Double, lat: Double, call:IResult){ + RoadHelper.getInstance()?.isInRoadSideFenceRegion(lon,lat, call) + } + diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/dialog/BlurView.java b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/dialog/BlurView.java index e5f7d06e6f..745cee3c84 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/dialog/BlurView.java +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/dialog/BlurView.java @@ -336,6 +336,10 @@ public class BlurView extends View { /** * Custom draw the blurred bitmap and color to define your own shape + * + * @param canvas + * @param blurredBitmap + * @param overlayColor */ protected void drawBlurredBitmap(Canvas canvas, Bitmap blurredBitmap, int overlayColor) { if (blurredBitmap != null) { diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/marker/MarkerCacheController.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/marker/MarkerCacheController.kt index a5ca33632a..cc5f5f70e2 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/marker/MarkerCacheController.kt +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/marker/MarkerCacheController.kt @@ -51,7 +51,7 @@ class MarkerCacheController(private val mapAutoView: MapAutoView) { private var lastPreTime = 0L //显示infowindow - var showInfo: Boolean = true + var showInfo: Boolean = false init { lastPreTime = 0L diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/view/MapAutoView.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/view/MapAutoView.kt index 1409f600bd..337ce4756b 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/view/MapAutoView.kt +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/view/MapAutoView.kt @@ -125,9 +125,15 @@ open class MapAutoView : FrameLayout, LonLatPointListener, ITraffic,ILockLocatio private val weatherRepository by lazy { WeatherRepository() } private var isFirstInit = true + private var mDeviationAngle = 0f //The location information of the last loaded road data private var mLastRoadLonLatPoint:LonLatPoint? = null - + //The interval time of load the info of the road side fence + private var mIntervalTimeRoadSideFence = 5000 + //The last time of load the info of the road side fence + private var mLastTimeRoadSideFence = 0L + //The location information of the last loaded road side fence data + private var mLastRoadSideFenceLonLatPoint:LonLatPoint? = null constructor(context: Context) : super(context) { initView() } @@ -435,6 +441,7 @@ open class MapAutoView : FrameLayout, LonLatPointListener, ITraffic,ILockLocatio } lastUpdateTime = System.currentTimeMillis() getRoadInfo(mogoLocation) + isInRoadSideFenceRegion(mogoLocation) if(isFirstInit){ isFirstInit = false updateCacheByCityCode(mogoLocation) @@ -552,7 +559,7 @@ open class MapAutoView : FrameLayout, LonLatPointListener, ITraffic,ILockLocatio mMapStyleParams?.let { when (it.getPerspectiveMode()) { MapParams.MAP_PERSPECTIVE_UP_NORTH -> { - modeHeading = 0.0f + modeHeading = -mDeviationAngle mMapController?.setSelfLocaionControl(MapAutoApi.MAP_PERSPECTIVE_UP_NORTH) } MapParams.MAP_PERSPECTIVE_UP_CAR -> { @@ -905,6 +912,25 @@ open class MapAutoView : FrameLayout, LonLatPointListener, ITraffic,ILockLocatio mEventController?.removeRoamStatusListener(onRoamStatusListener) } + fun setOnRoadSideFenceRegionListener(roadSideFenceRegionListener: OnRoadSideFenceRegionListener, intervalTime: Int){ + mMapController?.getClerk()?.add() + if(mEventController == null){ + mEventController = MapEventController() + } + mEventController?.addRoadSideFenceRegionListener(roadSideFenceRegionListener) + mIntervalTimeRoadSideFence = if(intervalTime == 0){ + return + }else if(intervalTime < 5000){ + 5000 + }else { + intervalTime + } + } + + fun removeOnRoamStatusListener(roadSideFenceRegionListener: OnRoadSideFenceRegionListener){ + mMapController?.getClerk()?.add() + mEventController?.removeRoadSideFenceRegionListener(roadSideFenceRegionListener) + } override fun onRoadLoaded( tileId: Int, leftTopLon: Double, leftTopLat: Double, leftBottomLon: Double, leftBottomLat: Double, rightTopLon: Double, rightTopLat: Double, rightBottomLon: Double, rightBottomLat: Double, roadInfo: String? @@ -988,6 +1014,43 @@ open class MapAutoView : FrameLayout, LonLatPointListener, ITraffic,ILockLocatio } } + private fun isInRoadSideFenceRegion(mogoLocation: MogoLocation) { + if (System.currentTimeMillis() - mLastTimeRoadSideFence > mIntervalTimeRoadSideFence) { + mLastTimeRoadSideFence = System.currentTimeMillis() + mLastRoadSideFenceLonLatPoint?.let { + if (CompileConfig.DEBUG) { + Log.i(TAG, "roadSideFence--op--cancelTask last: $mLastRoadSideFenceLonLatPoint") + } + //发现有任务堆积时(100米为超参,按照常识5秒内未返回数据),取消之前道路相关任务 + if (MapTools.getDistance( + it.latitude, + it.longitude, + mogoLocation.lat, + mogoLocation.lon + ) > 100.0 + ) { + if (CompileConfig.DEBUG) { + Log.i(TAG, "roadop--cancelTask:distance>200 : $mLastRoadLonLatPoint") + } + // 取消任务 + RoadHelper.getInstance()?.cancelTask() + } + } + RoadHelper.getInstance()?.isInRoadSideFenceRegion( + mogoLocation.lon, + mogoLocation.lat, + object : IResult { + override fun result(code: Int, result: Int?) { + mLastRoadSideFenceLonLatPoint = LonLatPoint(mogoLocation.lon,mogoLocation.lat) + result?.let { + mEventController?.dispatchRoadSideFenceRegionListener(it) + } + } + }) + + + } + } override fun getCurrentLonLatPoint(): LonLatPoint { return LonLatPoint(mLocationLon, mLocationLat, mLocationAlt.toDouble(), mLocationHeading) } @@ -1039,4 +1102,12 @@ open class MapAutoView : FrameLayout, LonLatPointListener, ITraffic,ILockLocatio } } + /** + * 设置正北模式地图偏转角度 + * @param deviationAngle + */ + fun setDeviationAngle(deviationAngle:Float){ + mDeviationAngle = deviationAngle + } + } \ No newline at end of file diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/view/MapAutoViewHelper.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/view/MapAutoViewHelper.kt index 7aaeffb750..5c973e3cf9 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/view/MapAutoViewHelper.kt +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/view/MapAutoViewHelper.kt @@ -366,9 +366,11 @@ class MapAutoViewHelper(mapAutoView: MapAutoView) { * 设置地图视图模式 * * @param mapPerspective 视图模式 1: 2D模式 2: 3D模式 3:车头向上 4:正北模式 + * @param deviationAngle 正北模式地图偏转角度 默认0f */ - fun setMapViewPerspective(mapPerspective: Int) { + fun setMapViewPerspective(mapPerspective: Int,deviationAngle:Float = 0f) { mMapAutoView.getClerk()?.add() + mMapAutoView.setDeviationAngle(deviationAngle) mMapAutoView.getMapController()?.getMapStyleParams()?.setPerspectiveMode(mapPerspective) mMapAutoView.getMapController()?.setMapViewPerspective(mapPerspective)