diff --git a/foudations/mogo-utils/build.gradle b/foudations/mogo-utils/build.gradle index acb651044b..b189907466 100644 --- a/foudations/mogo-utils/build.gradle +++ b/foudations/mogo-utils/build.gradle @@ -38,6 +38,7 @@ dependencies { annotationProcessor rootProject.ext.dependencies.supportannos annotationProcessor rootProject.ext.dependencies.glidecompiler implementation rootProject.ext.dependencies.androidxappcompat + api 'ch.hsr:geohash:1.4.0' api rootProject.ext.dependencies.mogoaicloudnetwork api rootProject.ext.dependencies.mogoaicloudpassport diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java index cf213a065a..4e2757fc78 100644 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java @@ -4,12 +4,14 @@ import android.content.Context; import android.graphics.Color; import android.location.Location; import android.util.AttributeSet; +import android.util.Log; import android.view.LayoutInflater; import android.view.MotionEvent; import android.widget.RelativeLayout; import androidx.annotation.Nullable; +import com.alibaba.android.arouter.thread.CancelableCountDownLatch; import com.amap.api.maps.AMap; import com.amap.api.maps.CameraUpdate; import com.amap.api.maps.CameraUpdateFactory; @@ -23,6 +25,7 @@ import com.amap.api.maps.model.Marker; import com.amap.api.maps.model.MarkerOptions; import com.amap.api.maps.model.Polyline; import com.amap.api.maps.model.PolylineOptions; +import com.mogo.cloud.commons.utils.CoordinateUtils; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.debug.DebugConfig; import com.mogo.map.MogoLatLng; @@ -36,6 +39,8 @@ import com.mogo.utils.logger.Logger; import java.util.ArrayList; import java.util.List; +import ch.hsr.geohash.GeoHash; + /** * 小地图的方向View * @@ -178,13 +183,33 @@ public class SmallMapDirectionView mCarMarker.setToTop(); } + if (mCoordinatesLatLng.size() > 1) { mCoordinatesLatLngCurrent.clear(); for (LatLng lng : mCoordinatesLatLng) { MogoLatLng mogoLatLng = new MogoLatLng(lng.latitude, lng.longitude); mCoordinatesLatLngCurrent.add(mogoLatLng); } - drawablePolyline(mCoordinatesLatLngCurrent); + + // 结束位置 + LatLng endLatLng = mCoordinatesLatLng.get(mCoordinatesLatLng.size() - 1); + // 与结束位置进行 GeoHash 0-12 +// GeoHash endGeoHash = GeoHash.withCharacterPrecision(endLatLng.latitude, endLatLng.longitude, 7); +// GeoHash currentGeoHash = GeoHash.withCharacterPrecision(currentLatLng.latitude, currentLatLng.longitude, 7); +// Log.d(MODULE_NAME, "currentGeoHash=" + currentGeoHash); +// Log.d(MODULE_NAME, "endGeoHash=" + endGeoHash); + + float calculateDistance = CoordinateUtils.calculateLineDistance( + endLatLng.latitude, endLatLng.longitude, + currentLatLng.latitude, currentLatLng.longitude + ); + + Log.d(MODULE_NAME, "calculateDistance=" + calculateDistance); + if (calculateDistance <= 20) { + clearPolyline(); + } else { + drawablePolyline(mCoordinatesLatLngCurrent); + } } else { //设置希望展示的地图缩放级别 mAMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, zoomLevel)); diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapProvider.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapProvider.java index fafaf538e8..77255728a9 100644 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapProvider.java +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapProvider.java @@ -9,6 +9,7 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.map.MogoLatLng; import com.mogo.module.common.MogoApisHandler; import com.mogo.service.MogoServicePaths; +import com.mogo.service.adas.IMogoAdasRouteCallBack; import com.mogo.service.smp.IMogoSmallMapProvider; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; @@ -21,7 +22,7 @@ import java.util.List; * @date 12/10/20 1:34 PM */ @Route(path = MogoServicePaths.PATH_SMALL_MAP) -public class SmallMapProvider implements IMogoSmallMapProvider, IMogoStatusChangedListener { +public class SmallMapProvider implements IMogoSmallMapProvider, IMogoStatusChangedListener, IMogoAdasRouteCallBack { private final String TAG = "SmallVisionProvider"; private Context mContext; @@ -36,6 +37,7 @@ public class SmallMapProvider implements IMogoSmallMapProvider, IMogoStatusChang mActivity = activity; mContainerId = containerId; SmpServiceManager.init(mActivity); + MogoApisHandler.getInstance().getApis().getAdasControllerApi().addAdasAutopilotRouteCallBack(this); } @Override @@ -108,4 +110,13 @@ public class SmallMapProvider implements IMogoSmallMapProvider, IMogoStatusChang } } } + + @Override + public void routeResult(List routeList) { + if (routeList != null && routeList.size() > 0) { + drawablePolyline(routeList); + } else { + clearPolyline(); + } + } } diff --git a/modules/mogo-module-v2x/build.gradle b/modules/mogo-module-v2x/build.gradle index a299f8db01..9e1de63cc6 100644 --- a/modules/mogo-module-v2x/build.gradle +++ b/modules/mogo-module-v2x/build.gradle @@ -44,7 +44,6 @@ dependencies { // implementation 'com.tencent.liteavsdk:LiteAVSDK_Smart:7.4.9211' implementation rootProject.ext.dependencies.livesdk - implementation 'ch.hsr:geohash:1.4.0' implementation rootProject.ext.dependencies.flexbox implementation rootProject.ext.dependencies.rxandroid implementation rootProject.ext.dependencies.androidxrecyclerview diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java index c1830441d9..396e8bef1d 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java @@ -496,7 +496,7 @@ public class TestOnLineCarUtils { try { InputStream inputStream = V2XUtils.getApp() .getResources() - .openRawResource(R.raw.test_coordinates2); + .openRawResource(R.raw.test_coordinates); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int len = -1; byte[] buffer = new byte[1024]; diff --git a/modules/mogo-module-v2x/src/main/res/raw/test_coordinates.json b/modules/mogo-module-v2x/src/main/res/raw/test_coordinates.json index 23201af00b..ddbe44c4da 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/test_coordinates.json +++ b/modules/mogo-module-v2x/src/main/res/raw/test_coordinates.json @@ -4,51 +4,91 @@ "lat": 39.976655 }, { - "lon": 116.41763, - "lat": 39.978033 + "lon": 116.417636, + "lat": 39.977925 }, { - "lon": 116.417593, - "lat": 39.978772 + "lon": 116.417577, + "lat": 39.97876 }, { - "lon": 116.417464, - "lat": 39.981346 - }, - { - "lon": 116.41741, - "lat": 39.982965 - }, - { - "lon": 116.417132, - "lat": 39.987076 - }, - { - "lon": 116.417217, - "lat": 39.988621 - }, - { - "lon": 116.417217, - "lat": 39.990791 - }, - { - "lon": 116.417325, - "lat": 39.997432 + "lon": 116.417545, + "lat": 39.979578 }, { "lon": 116.417475, - "lat": 39.998583 + "lat": 39.981111 }, { - "lon": 116.417818, - "lat": 40.001377 + "lon": 116.417443, + "lat": 39.981933 }, { - "lon": 116.417668, - "lat": 40.002939 + "lon": 116.4174, + "lat": 39.982718 }, { - "lon": 116.417475, - "lat": 40.003777 + "lon": 116.417341, + "lat": 39.98398 + }, + { + "lon": 116.417293, + "lat": 39.984999 + }, + { + "lon": 116.417266, + "lat": 39.98583 + }, + { + "lon": 116.417228, + "lat": 39.986697 + }, + { + "lon": 116.417169, + "lat": 39.987844 + }, + { + "lon": 116.417164, + "lat": 39.988312 + }, + { + "lon": 116.417164, + "lat": 39.988916 + }, + { + "lon": 116.417164, + "lat": 39.989956 + }, + { + "lon": 116.417185, + "lat": 39.990914 + }, + { + "lon": 116.417175, + "lat": 39.991654 + }, + { + "lon": 116.417148, + "lat": 39.992952 + }, + { + "lon": 116.417159, + "lat": 39.993783 + }, + { + "lon": 116.41718, + "lat": 39.994843 + }, + { + "lon": 116.417191, + "lat": 39.99557 + }, + { + "lon": 116.417234, + "lat": 39.996577 + }, + { + "lon": 116.417362, + "lat": 39.997641 } ] \ No newline at end of file