diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java index 52e17431b3..82547703d6 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java @@ -1,5 +1,7 @@ package com.mogo.eagle.core.function.smp; +import static com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.BIZ_SLW; +import static com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.V2I; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_MAP; import android.content.Context; @@ -7,6 +9,7 @@ import android.graphics.Color; import android.location.Location; import android.os.Bundle; import android.util.AttributeSet; +import android.util.Log; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; @@ -33,16 +36,23 @@ import com.mogo.cloud.commons.utils.CoordinateUtils; import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener; +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager; +import com.mogo.eagle.core.function.call.v2x.CallLimitingVelocityListenerManager; import com.mogo.eagle.core.function.map.R; import com.mogo.eagle.core.function.smp.view.ISmallMapDirectionView; import com.mogo.eagle.core.utilcode.mogo.MapAssetStyleUtils; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.eagle.core.widget.RoundLayout; +import com.mogo.map.MogoMapUIController; import com.mogo.module.common.utils.DrivingDirectionUtils; +import com.zhjt.service_biz.BizConfig; import java.util.ArrayList; import java.util.List; +import java.util.Timer; +import java.util.TimerTask; /** * 小地图的方向View @@ -70,6 +80,7 @@ public class SmallMapDirectionView private Polyline mPolyline; private CameraUpdate mCameraUpdate; private Context mContext; + private MogoLocation mLocation; public SmallMapDirectionView(Context context) { this(context, null); @@ -100,6 +111,12 @@ public class SmallMapDirectionView // 注册定位监听 CallerMapLocationListenerManager.INSTANCE.addListener(TAG, this, false); + startTask(); + } + + private void startTask() { + Timer mTimer = new Timer(); + mTimer.schedule(new UpdateLocationTask(), 1000, 200); } @Override @@ -166,50 +183,47 @@ public class SmallMapDirectionView if (location == null) { return; } - if (mCarMarker == null){ - mCarMarker = mAMap.addMarker(new MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.module_small_map_view_my_location_logo)) - .anchor(0.5f, 0.5f)); - } - if(mCarMarker == null){ - return; - } - LatLng currentLatLng = new LatLng(location.getLatitude(), location.getLongitude()); - //更新车辆位置 - mCarMarker.setPosition(currentLatLng); + mLocation = location; + } - CameraPosition cameraPosition; - if (mCoordinatesLatLng.size() > 1) { -// mCoordinatesLatLngCurrent.clear(); -// for (LatLng lng : mCoordinatesLatLng) { -// MogoLatLng mogoLatLng = new MogoLatLng(lng.latitude, lng.longitude); -// mCoordinatesLatLngCurrent.add(mogoLatLng); -// } -// removeLoction(latLng); + private class UpdateLocationTask extends TimerTask { + @Override + public void run() { + if (mLocation != null) { + MogoLocation location = mLocation; + if (mCarMarker == null){ + mCarMarker = mAMap.addMarker(new MarkerOptions() + .icon(BitmapDescriptorFactory.fromResource(R.drawable.module_small_map_view_my_location_logo)) + .anchor(0.5f, 0.5f)); + } + if(mCarMarker == null){ + return; + } + LatLng currentLatLng = new LatLng(location.getLatitude(), location.getLongitude()); + float bearing = (float) Math.floor(location.getBearing()); + //更新车辆位置 + mCarMarker.setPosition(currentLatLng); - // 结束位置 - 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); + CameraPosition cameraPosition; + if (mCoordinatesLatLng.size() > 1) { + // 结束位置 + LatLng endLatLng = mCoordinatesLatLng.get(mCoordinatesLatLng.size() - 1); - float calculateDistance = CoordinateUtils.calculateLineDistance( - endLatLng.latitude, endLatLng.longitude, - currentLatLng.latitude, currentLatLng.longitude - ); + float calculateDistance = CoordinateUtils.calculateLineDistance( + endLatLng.latitude, endLatLng.longitude, + currentLatLng.latitude, currentLatLng.longitude + ); - CallerLogger.INSTANCE.d(M_MAP + TAG, "calculateDistance=" + calculateDistance); - if (calculateDistance <= 5) { - clearPolyline(); - mCoordinatesLatLng.clear(); + CallerLogger.INSTANCE.d(M_MAP + TAG, "calculateDistance=" + calculateDistance); + if (calculateDistance <= 5) { + clearPolyline(); + mCoordinatesLatLng.clear(); + } + } + cameraPosition = new CameraPosition.Builder().target(mCarMarker.getPosition()).tilt(0).bearing(bearing).zoom(zoomLevel).build(); + mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); } - cameraPosition = new CameraPosition.Builder().target(mCarMarker.getPosition()).tilt(0).bearing(location.getBearing()).zoom(zoomLevel).build(); - } else { - //设置希望展示的地图缩放级别 - cameraPosition = new CameraPosition.Builder().target(mCarMarker.getPosition()).tilt(0).bearing(location.getBearing()).zoom(zoomLevel).build(); -// mAMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, zoomLevel)); } - mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); } private void removeLocation(Location latLng) {