diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/NaviToDestinationModel.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java similarity index 75% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/NaviToDestinationModel.java rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java index 1ea822836d..048a0baa0d 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/NaviToDestinationModel.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/AmapNaviToDestinationModel.java @@ -1,4 +1,4 @@ -package com.mogo.och.taxi.model; +package com.mogo.och.common.module.map; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; @@ -25,9 +25,7 @@ import com.amap.api.navi.model.NaviLatLng; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.NetworkUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; -import com.mogo.och.taxi.callback.ITaxiNaviChangedCallback; -import com.mogo.och.taxi.constant.TaxiConst; -import com.mogo.och.taxi.utils.PermissionUtil; +import com.mogo.och.common.module.utils.PermissionUtil; import java.util.ArrayList; import java.util.List; @@ -37,7 +35,7 @@ import java.util.concurrent.atomic.AtomicInteger; * @author: wangmingjun * @date: 2021/12/6 */ -public class NaviToDestinationModel implements AMapNaviListener { +public class AmapNaviToDestinationModel implements AMapNaviListener { public static final String TAG = "NaviToDestinationModel"; @@ -46,18 +44,18 @@ public class NaviToDestinationModel implements AMapNaviListener { protected final List sList = new ArrayList(); protected final List eList = new ArrayList(); protected List mWayPointList = new ArrayList(); - private ITaxiNaviChangedCallback mNaviChangedCallback; + private ICommonNaviChangedCallback mNaviChangedCallback; private AtomicInteger errorCount = new AtomicInteger(0); private boolean isPlay; - public static NaviToDestinationModel getInstance(Context context) { + public static AmapNaviToDestinationModel getInstance(Context context) { mContext = context; return SingletonHolder.INSTANCE; } private static final class SingletonHolder { - private static final NaviToDestinationModel INSTANCE = new NaviToDestinationModel(); + private static final AmapNaviToDestinationModel INSTANCE = new AmapNaviToDestinationModel(); } - private NaviToDestinationModel(){ + private AmapNaviToDestinationModel(){ } public void initAMapNavi(NaviLatLng startLatLng,NaviLatLng endLatLng) { try { @@ -94,7 +92,7 @@ public class NaviToDestinationModel implements AMapNaviListener { } } - public void setOCHTaciNaviChangedCallback(ITaxiNaviChangedCallback callback){ + public void setOCHTaciNaviChangedCallback(ICommonNaviChangedCallback callback){ this.mNaviChangedCallback = callback; } @Override @@ -170,11 +168,7 @@ public class NaviToDestinationModel implements AMapNaviListener { } return; } -// if (result.getErrorCode() == 3){ -// ToastUtils.showShort("车辆当前坐标错误"); -// }else if (result.getErrorCode() == 6){ -// ToastUtils.showShort("终点坐标错误"); -// } + CallerLogger.INSTANCE.i(M_TAXI + TAG, "路线计算失败:错误码=" + result.getErrorCode() + ",Error Message= " + result.getErrorDetail()); CallerLogger.INSTANCE.i(M_TAXI + TAG, "错误码详细链接见:http://lbs.amap.com/api/android-navi-sdk/guide/tools/errorcode/"); } @@ -346,88 +340,4 @@ public class NaviToDestinationModel implements AMapNaviListener { public void onPlayRing(int i) { } - - /** - * 车道信息说明: - *

- * 0xFF, 无对应车道 - * 0, 直行 - * 1, 左转 - * 2, 直行+左转 - * 3, 右转 - * 4, 直行+右转 - * 5, 左掉头 - * 6, 左转+右转 - * 7, 直行+左转+右转 - * 8, 右掉头 - * 9, 直行+左掉头 - * 10, 直行+右掉头 - * 11, 左转+左掉头 - * 12, 右转+右掉头 - * 13, 直行+扩展 - * 14, 左转+左掉头+扩展 - * 15, 保留 - * 16, 直行+左转+左掉头 - * 17, 右转+左掉头 - * 18, 左转+右转+左掉头 - * 19, 直行+右转+左掉头 - * 20, 左转+右掉头 - * 21, 公交车道 - * 22, 空车道 - * 23 可变车道 - */ - - String[] array = { - "直行车道" - , "左转车道" - , "左转或直行车道" - , "右转车道" - , "右转或直行车道" - , "左掉头车道" - , "左转或者右转车道" - , " 左转或右转或直行车道" - , "右转掉头车道" - , "直行或左转掉头车道" - , "直行或右转掉头车道" - , "左转或左掉头车道" - , "右转或右掉头车道" - , "直行并且车道扩展" - , "左转+左掉头+扩展" - , "不可以选择该车道" - , "直行+左转+左掉头车道" - , "右转+左掉头" - , "左转+右转+左掉头" - , "直行+右转+左掉头" - , "左转+右掉头" - , "公交车道" - , "空车道" - , "可变车道" - }; - - String[] actions = { - "直行" - , "左转" - , "左转或直行" - , "右转" - , "右转或这行" - , "左掉头" - , "左转或者右转" - , " 左转或右转或直行" - , "右转掉头" - , "直行或左转掉头" - , "直行或右转掉头" - , "左转或左掉头" - , "右转或右掉头" - , "直行并且车道扩展" - , "左转+左掉头+扩展" - , "不可以选择" - , "直行+左转+左掉头" - , "右转+左掉头" - , "左转+右转+左掉头" - , "直行+右转+左掉头" - , "左转+右掉头" - , "公交车道" - , "空车道" - , "可变车道" - }; } diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/CommonAmapNaviVIew.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/CommonAmapNaviVIew.kt new file mode 100644 index 0000000000..887729704f --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/CommonAmapNaviVIew.kt @@ -0,0 +1,249 @@ +package com.mogo.och.common.module.map + +import android.content.Context +import android.graphics.BitmapFactory +import android.os.Bundle +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.RelativeLayout +import com.amap.api.maps.AMap +import com.amap.api.maps.model.CustomMapStyleOptions +import com.amap.api.navi.AMapNaviView +import com.amap.api.navi.AMapNaviViewListener +import com.amap.api.navi.AMapNaviViewOptions +import com.amap.api.navi.model.RouteOverlayOptions +import com.mogo.eagle.core.utilcode.mogo.MapAssetStyleUtils +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.och.common.module.R +import kotlinx.android.synthetic.main.taxi_common_amap_navi_view.view.* +import kotlin.concurrent.thread + +/** + * @author: wangmingjun + * @date: 2022/10/23 + */ +class CommonAmapNaviVIew @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0) + : RelativeLayout(context,attrs,defStyleAttr), AMapNaviViewListener { + + private val TAG : String = "TaxiAmapNaviVIew" + + var aMap : AMap? = null + + init { + LayoutInflater.from(context).inflate(R.layout.taxi_common_amap_navi_view,this,true) + initMapView() + } + + private fun initMapView(){ + + amapNaviView.setAMapNaviViewListener(this) + //车头向上模式 + amapNaviView.naviMode = AMapNaviView.CAR_UP_MODE + aMap = amapNaviView.map + //关闭地图文字显示 + aMap!!.showMapText(false) + // 设置导航地图模式,aMap是地图控制器对象。 + aMap!!.mapType = AMap.MAP_TYPE_NIGHT + // 关闭显示实时路况图层,aMap是地图控制器对象。 + aMap!!.isTrafficEnabled = false + setMapViewOptions() + + thread(start = true){ + try { + Thread.sleep(1000L) + } catch (e : InterruptedException) { + e.printStackTrace() + } + + if (null == context){ + return@thread + } + + aMap!!.setCustomMapStyle( + CustomMapStyleOptions() + .setEnable(true) + .setStyleData(MapAssetStyleUtils.getAssetsStyle(context, "over_view_style.data")) + .setStyleExtraData(MapAssetStyleUtils.getAssetsExtraStyle(context, "over_view_style_extra.data")) + ) + } + } + + private fun setMapViewOptions() { + + val options = AMapNaviViewOptions() + options.tilt = 0 //设置 2D 模式 + + options.isLayoutVisible = false //设置导航界面UI是否显示。 + + options.isTrafficBarEnabled = false //设置路况光柱条是否显示(只适用于驾车导航,需要联网)。 + + options.isAutoLockCar = true //设置6秒后是否自动锁车 + + options.isAutoDisplayOverview = true //设置是否自动全览模式,即在算路成功后自动进入全览模式 + + options.isTrafficLine = false + options.setModeCrossDisplayShow(true) //设置是否显示路口放大图(路口模型图) + + options.isAutoChangeZoom = true //自动缩放级别 + + options.carBitmap = + BitmapFactory.decodeResource(context.resources, R.drawable.taxi_navi_arrow_icon) + options.fourCornersBitmap = + BitmapFactory.decodeResource(this.resources, R.drawable.taxi_navi_direction_icon) + options.isAutoChangeZoom = true //设置是否开启动态比例尺 (锁车态下自动进行地图缩放变化) + +// options.setZoom(18);//14-18 +// options.setTrafficInfoUpdateEnabled(false); +// options.setTrafficLayerEnabled(false);//设置[实时交通图层开关按钮]是否显示(只适用于驾车导航,需要联网)。 +// options.setCameraInfoUpdateEnabled(false); +// options.setCompassEnabled(false);//设置指南针图标否在导航界面显示,默认显示。 +// options.setLaneInfoShow(false);// 设置是否显示道路信息view +// options.setNaviArrowVisible(false);//设置路线转向箭头隐藏和显示 +// options.setRealCrossDisplayShow(false);//设置是否显示路口放大图(实景图) +// options.setRouteListButtonShow(true);//设置导航界面是否显示路线全览按钮。 +// options.setSettingMenuEnabled(false);//设置菜单按钮是否在导航界面显示。 + + // options.setZoom(18);//14-18 +// options.setTrafficInfoUpdateEnabled(false); +// options.setTrafficLayerEnabled(false);//设置[实时交通图层开关按钮]是否显示(只适用于驾车导航,需要联网)。 +// options.setCameraInfoUpdateEnabled(false); +// options.setCompassEnabled(false);//设置指南针图标否在导航界面显示,默认显示。 +// options.setLaneInfoShow(false);// 设置是否显示道路信息view +// options.setNaviArrowVisible(false);//设置路线转向箭头隐藏和显示 +// options.setRealCrossDisplayShow(false);//设置是否显示路口放大图(实景图) +// options.setRouteListButtonShow(true);//设置导航界面是否显示路线全览按钮。 +// options.setSettingMenuEnabled(false);//设置菜单按钮是否在导航界面显示。 + val routeOverlayOptions = RouteOverlayOptions() + +// routeOverlayOptions.setArrowOnTrafficRoute(BitmapFactory.decodeResource(getResources(),R.drawable.custtexture_aolr)); + +// routeOverlayOptions.setArrowOnTrafficRoute(BitmapFactory.decodeResource(getResources(),R.drawable.custtexture_aolr)); + routeOverlayOptions.normalRoute = + BitmapFactory.decodeResource(resources, R.drawable.taxi_navi_line_icon) + options.routeOverlayOptions = routeOverlayOptions + + amapNaviView.viewOptions = options + } + + override fun onNaviSetting() { + //底部导航设置点击回调 + } + + override fun onNaviCancel() { + TODO("Not yet implemented") + } + + override fun onNaviBackClick(): Boolean { + return false + } + + override fun onNaviMapMode(p0: Int) { + //导航态车头模式,0:车头朝上状态;1:正北朝上模式。 + } + + override fun onNaviTurnClick() { + //转弯view的点击回调 + } + + override fun onNextRoadClick() { + //下一个道路View点击回调 + } + + override fun onScanViewButtonClick() { + //全览按钮点击回调 + } + + override fun onLockMap(p0: Boolean) { + //锁地图状态发生变化时回调 + } + + override fun onNaviViewLoaded() { + d(SceneConstant.M_TAXI + TAG, "导航页面加载成功") + d( + SceneConstant.M_TAXI + TAG, + "请不要使用AMapNaviView.getMap().setOnMapLoadedListener();会overwrite导航SDK内部画线逻辑" + ) + } + + override fun onMapTypeChanged(p0: Int) { + TODO("Not yet implemented") + } + + override fun onNaviViewShowMode(p0: Int) { + TODO("Not yet implemented") + } + + fun onCreate(savedInstanceState : Bundle?){ + amapNaviView.onCreate(savedInstanceState) + } + + fun onResume(){ + amapNaviView.onResume() + } + + fun onPause(){ + amapNaviView.onPause() + } + + fun onDestroy(){ + amapNaviView.onDestroy() + } + + var array = arrayOf( + "直行车道", + "左转车道", + "左转或直行车道", + "右转车道", + "右转或直行车道", + "左掉头车道", + "左转或者右转车道", + " 左转或右转或直行车道", + "右转掉头车道", + "直行或左转掉头车道", + "直行或右转掉头车道", + "左转或左掉头车道", + "右转或右掉头车道", + "直行并且车道扩展", + "左转+左掉头+扩展", + "不可以选择该车道", + "直行+左转+左掉头车道", + "右转+左掉头", + "左转+右转+左掉头", + "直行+右转+左掉头", + "左转+右掉头", + "公交车道", + "空车道", + "可变车道" + ) + + var actions = arrayOf( + "直行", + "左转", + "左转或直行", + "右转", + "右转或这行", + "左掉头", + "左转或者右转", + " 左转或右转或直行", + "右转掉头", + "直行或左转掉头", + "直行或右转掉头", + "左转或左掉头", + "右转或右掉头", + "直行并且车道扩展", + "左转+左掉头+扩展", + "不可以选择", + "直行+左转+左掉头", + "右转+左掉头", + "左转+右转+左掉头", + "直行+右转+左掉头", + "左转+右掉头", + "公交车道", + "空车道", + "可变车道" + ) +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiNaviChangedCallback.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/ICommonNaviChangedCallback.java similarity index 75% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiNaviChangedCallback.java rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/ICommonNaviChangedCallback.java index 138de6b9b1..12440028bb 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiNaviChangedCallback.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/ICommonNaviChangedCallback.java @@ -1,11 +1,11 @@ -package com.mogo.och.taxi.callback; +package com.mogo.och.common.module.map; /** * @author: wangmingjun * @date: 2021/12/3 */ -public interface ITaxiNaviChangedCallback { +public interface ICommonNaviChangedCallback { // 当前位置距离上车点的距离(米)、预估时间(秒) void onCurrentNaviDistAndTimeChanged(int meters, long timeInSecond); void reInitNaviAmap(boolean isPlay,boolean isRestart); -} +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/PermissionUtil.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/PermissionUtil.java new file mode 100644 index 0000000000..8dac5fdf56 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/PermissionUtil.java @@ -0,0 +1,35 @@ +package com.mogo.och.common.module.utils; + +import android.content.Context; +import android.content.pm.PackageManager; +import android.location.LocationManager; + +import androidx.core.content.ContextCompat; + +/** + * @author: wangmingjun + * @date: 2021/12/7 + */ +public class PermissionUtil { + + public static boolean checkPermission(Context context,String... permissons) { + + for (String permisson : permissons) { + if ((ContextCompat.checkSelfPermission(context, + permisson) != PackageManager.PERMISSION_GRANTED)) { + return false; + } + } + return true; + } + + public static boolean isLocServiceEnable(Context context) { + LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); + boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); + boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); + if (gps || network) { + return true; + } + return false; + } +} diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-xhdpi/taxi_navi_arrow_icon.png b/OCH/mogo-och-common-module/src/main/res/drawable-xhdpi/taxi_navi_arrow_icon.png new file mode 100644 index 0000000000..a83b7c9e74 Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-xhdpi/taxi_navi_arrow_icon.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-xhdpi/taxi_navi_direction_icon.png b/OCH/mogo-och-common-module/src/main/res/drawable-xhdpi/taxi_navi_direction_icon.png new file mode 100755 index 0000000000..1b96799531 Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-xhdpi/taxi_navi_direction_icon.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/drawable-xhdpi/taxi_navi_line_icon.png b/OCH/mogo-och-common-module/src/main/res/drawable-xhdpi/taxi_navi_line_icon.png new file mode 100644 index 0000000000..7f758d5999 Binary files /dev/null and b/OCH/mogo-och-common-module/src/main/res/drawable-xhdpi/taxi_navi_line_icon.png differ diff --git a/OCH/mogo-och-common-module/src/main/res/layout/taxi_common_amap_navi_view.xml b/OCH/mogo-och-common-module/src/main/res/layout/taxi_common_amap_navi_view.xml new file mode 100644 index 0000000000..3d5f5aa763 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/res/layout/taxi_common_amap_navi_view.xml @@ -0,0 +1,5 @@ + + diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 6a2fa36132..f48738f28a 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -38,6 +38,7 @@ import com.mogo.och.common.module.biz.constant.LoginStatusManager; import com.mogo.och.common.module.biz.constant.OchCommonConst; import com.mogo.och.common.module.biz.provider.LoginService; import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.common.module.map.AmapNaviToDestinationModel; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.PinYinUtil; import com.mogo.och.common.module.utils.ToastUtilsOch; @@ -1250,12 +1251,25 @@ public class TaxiModel { } if (null != routeList && routeList.getWayPointsList().size() > 0) { updateOrderRoute(routeList.getWayPointsList()); + setRouteLineMarker(routeList.getWayPointsList()); updateOrderRouteInfo(routeList.getWayPointsList()); } } }; + /** + * 设置路径规划起终点 + * @param models + */ + private void setRouteLineMarker(List models) { + List latLngModels = CoordinateCalculateRouteUtil + .coordinateConverterWgsToGcjListCommon(mContext,models); + if (mAutopilotPlanningCallback != null){ + mAutopilotPlanningCallback.setLineMarker(latLngModels); + } + } + /** * 上报订单全路径规划数据 * @@ -1326,7 +1340,7 @@ public class TaxiModel { } //开启实时计算剩余距离,剩余时间,预计时间 startOrStopCalculateRouteInfo(true); - NaviToDestinationModel.getInstance(mContext).destroyAmaNavi(); + AmapNaviToDestinationModel.getInstance(mContext).destroyAmaNavi(); } private void reportTotalDisAndTime() { diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/NaviPresenter.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/NaviPresenter.java index d6050f2e0c..8cb3205aa9 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/NaviPresenter.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/NaviPresenter.java @@ -69,7 +69,8 @@ public class NaviPresenter extends Presenter implements @Override public void setLineMarker(List models) { - + if (models == null) return; + runOnUIThread(() -> mView.setLineMarker(models)); } @Override diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/CommonBeingServerdOrdersFragment.java similarity index 97% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java rename to OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/CommonBeingServerdOrdersFragment.java index ebc707400d..8c8ae53469 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/CommonBeingServerdOrdersFragment.java @@ -29,17 +29,17 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.MogoMarkerManager; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.MogoMarkerOptions; +import com.mogo.och.common.module.map.AmapNaviToDestinationModel; +import com.mogo.och.common.module.map.ICommonNaviChangedCallback; import com.mogo.och.common.module.utils.DateTimeUtil; import com.mogo.och.common.module.utils.NumberFormatUtil; import com.mogo.och.common.module.utils.OCHThreadPoolManager; -import com.mogo.och.taxi.callback.ITaxiNaviChangedCallback; import com.mogo.och.taxi.constant.TaxiConst; import com.mogo.och.taxi.constant.TaxiOrderStatusEnum; import com.mogo.och.taxi.R; import com.mogo.och.taxi.bean.OrderQueryRespBean; import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean; import com.mogo.och.taxi.model.TaxiModel; -import com.mogo.och.taxi.model.NaviToDestinationModel; import java.util.Calendar; import java.util.List; @@ -49,7 +49,8 @@ import java.util.List; * @since 2021/1/18 * 正在进行中订单 */ -public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implements View.OnClickListener, ITaxiNaviChangedCallback { +public class CommonBeingServerdOrdersFragment extends BaseTaxiUIFragment + implements View.OnClickListener, ICommonNaviChangedCallback { public static final String TAG = "OCHTaxiBeingServerd"; private static Activity mActivity; @@ -96,12 +97,12 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement private volatile int saveOrderState = -1; - public static TaxiBeingServerdOrdersFragment newInstance(Activity activity, TaxiFragment taxiFragment) { + public static CommonBeingServerdOrdersFragment newInstance(Activity activity, TaxiFragment taxiFragment) { mActivity = activity; mTaxiFragment = taxiFragment; Bundle args = new Bundle(); - TaxiBeingServerdOrdersFragment fragment = new TaxiBeingServerdOrdersFragment(); + CommonBeingServerdOrdersFragment fragment = new CommonBeingServerdOrdersFragment(); fragment.setArguments(args); return fragment; } @@ -341,20 +342,20 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement } private void startNaviToStation(boolean isVoicePlay, double stationLat, double stationLng) { - NaviToDestinationModel.getInstance(getContext()).destroyAmaNavi(); + AmapNaviToDestinationModel.getInstance(getContext()).destroyAmaNavi(); CallerLogger.INSTANCE.d(M_TAXI + TAG, "currentLatLng=" + mTaxiFragment.mCurLatitude + " " + mTaxiFragment.mCurLongitude); NaviLatLng startNaviLatLng = new NaviLatLng(mTaxiFragment.mCurLatitude, mTaxiFragment.mCurLongitude); NaviLatLng endNaviLatLng = new NaviLatLng(stationLat, stationLng); - NaviToDestinationModel.getInstance(getContext()).initAMapNavi(startNaviLatLng, endNaviLatLng); - NaviToDestinationModel.getInstance(getContext()).setVoiceIsMute(isVoicePlay); - NaviToDestinationModel.getInstance(getContext()).setOCHTaciNaviChangedCallback(this); + AmapNaviToDestinationModel.getInstance(getContext()).initAMapNavi(startNaviLatLng, endNaviLatLng); + AmapNaviToDestinationModel.getInstance(getContext()).setVoiceIsMute(isVoicePlay); + AmapNaviToDestinationModel.getInstance(getContext()).setOCHTaciNaviChangedCallback(this); } private void showOrHideNavi(boolean isShow) { if (!isShow) { mNaviStartIcon.setVisibility(View.GONE); mNaviToEndIcon.setVisibility(View.GONE); - NaviToDestinationModel.getInstance(getContext()).destroyAmaNavi(); + AmapNaviToDestinationModel.getInstance(getContext()).destroyAmaNavi(); mTaxiFragment.showAmapNaviToStationFragment(false); } } @@ -436,7 +437,7 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement @Override public void onDestroyView() { super.onDestroyView(); - NaviToDestinationModel.getInstance(getContext()).destroyAmaNavi(); + AmapNaviToDestinationModel.getInstance(getContext()).destroyAmaNavi(); } private void startOrEndService() { diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiAmapNaviFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiAmapNaviFragment.java index 4255c9edf6..f112a4f47a 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiAmapNaviFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiAmapNaviFragment.java @@ -2,31 +2,24 @@ package com.mogo.och.taxi.ui; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; -import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; -import com.amap.api.maps.AMap; -import com.amap.api.maps.model.CustomMapStyleOptions; -import com.amap.api.navi.AMapNaviView; import com.amap.api.navi.AMapNaviViewListener; -import com.amap.api.navi.AMapNaviViewOptions; -import com.amap.api.navi.model.RouteOverlayOptions; -import com.mogo.eagle.core.utilcode.mogo.MapAssetStyleUtils; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.och.common.module.map.AmapNaviToDestinationModel; +import com.mogo.och.common.module.map.ICommonNaviChangedCallback; +import com.mogo.och.common.module.map.CommonAmapNaviVIew; import com.mogo.och.taxi.R; -import com.mogo.och.taxi.callback.ITaxiNaviChangedCallback; -import com.mogo.och.taxi.model.NaviToDestinationModel; /** * @author: wangmingjun * @date: 2021/11/30 */ -public class TaxiAmapNaviFragment extends BaseTaxiUIFragment implements AMapNaviViewListener, View.OnClickListener { +public class TaxiAmapNaviFragment extends BaseTaxiUIFragment implements AMapNaviViewListener { - private AMapNaviView mAMapNaviView; - private AMap aMap; - private ITaxiNaviChangedCallback mNaviToStartInfoCallback; // 前往乘客上车点 + private CommonAmapNaviVIew mAMapNaviView; + private ICommonNaviChangedCallback mNaviToStartInfoCallback; public static TaxiAmapNaviFragment newInstance() { Bundle args = new Bundle(); @@ -43,105 +36,27 @@ public class TaxiAmapNaviFragment extends BaseTaxiUIFragment implements AMapNavi @Override protected void initViews(View view) { - view.bringToFront(); - initMapView(view); - } - - private void initMapView(View view) { - mAMapNaviView = view.findViewById(R.id.navi_view); - mAMapNaviView.setAMapNaviViewListener(this); - //车头向上模式 - mAMapNaviView.setNaviMode(AMapNaviView.CAR_UP_MODE); - aMap = mAMapNaviView.getMap(); - //关闭地图文字显示 - aMap.showMapText(false); - // 设置导航地图模式,aMap是地图控制器对象。 - aMap.setMapType(AMap.MAP_TYPE_NIGHT); - // 关闭显示实时路况图层,aMap是地图控制器对象。 - aMap.setTrafficEnabled(false); - setMapViewOptions(); - new Thread(() -> { - try { - Thread.sleep(1000L); - } catch (InterruptedException e) { - e.printStackTrace(); - } - if (null == getContext()){ - return; - } - aMap.setCustomMapStyle( - new CustomMapStyleOptions() - .setEnable(true) - .setStyleData(MapAssetStyleUtils.getAssetsStyle(getContext(), "over_view_style.data")) - .setStyleExtraData(MapAssetStyleUtils.getAssetsExtraStyle(getContext(), "over_view_style_extra.data")) - ); - - //设置希望展示的地图缩放级别 - }).start(); } - private void setMapViewOptions() { - AMapNaviViewOptions options = new AMapNaviViewOptions(); - options.setTilt(0);//设置 2D 模式 - options.setLayoutVisible(false);//设置导航界面UI是否显示。 - options.setTrafficBarEnabled(false);//设置路况光柱条是否显示(只适用于驾车导航,需要联网)。 - options.setAutoLockCar(true);//设置6秒后是否自动锁车 - options.setAutoDisplayOverview(true);//设置是否自动全览模式,即在算路成功后自动进入全览模式 - options.setTrafficLine(false); - options.setModeCrossDisplayShow(true);//设置是否显示路口放大图(路口模型图) - options.setAutoChangeZoom(true);//自动缩放级别 - options.setCarBitmap(BitmapFactory.decodeResource(getContext().getResources(), R.drawable.taxi_navi_arrow_icon)); - options.setFourCornersBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.taxi_navi_direction_icon)); - options.setAutoChangeZoom(true);//设置是否开启动态比例尺 (锁车态下自动进行地图缩放变化) -// options.setZoom(18);//14-18 -// options.setTrafficInfoUpdateEnabled(false); -// options.setTrafficLayerEnabled(false);//设置[实时交通图层开关按钮]是否显示(只适用于驾车导航,需要联网)。 -// options.setCameraInfoUpdateEnabled(false); -// options.setCompassEnabled(false);//设置指南针图标否在导航界面显示,默认显示。 -// options.setLaneInfoShow(false);// 设置是否显示道路信息view -// options.setNaviArrowVisible(false);//设置路线转向箭头隐藏和显示 -// options.setRealCrossDisplayShow(false);//设置是否显示路口放大图(实景图) -// options.setRouteListButtonShow(true);//设置导航界面是否显示路线全览按钮。 -// options.setSettingMenuEnabled(false);//设置菜单按钮是否在导航界面显示。 - - RouteOverlayOptions routeOverlayOptions = new RouteOverlayOptions(); - -// routeOverlayOptions.setArrowOnTrafficRoute(BitmapFactory.decodeResource(getResources(),R.drawable.custtexture_aolr)); - routeOverlayOptions.setNormalRoute(BitmapFactory.decodeResource(getResources(), R.drawable.taxi_navi_line_icon)); - options.setRouteOverlayOptions(routeOverlayOptions); - - mAMapNaviView.setViewOptions(options); - } - public void goToOverview(){ - if (mAMapNaviView.isRouteOverviewNow()){ - mAMapNaviView.recoverLockMode(); - }else { - mAMapNaviView.displayOverview(); - } - } - - @Override - public void onClick(View v) { -// if (v.getId() == R.id.navi_overviewbuttonview){ -// goToOverview(); -// } - } @Override protected void initViews(Bundle savedInstanceState) { super.initViews(savedInstanceState); + if (mAMapNaviView != null) mAMapNaviView.onCreate(savedInstanceState); } @Override public void onResume() { super.onResume(); + if (mAMapNaviView != null) mAMapNaviView.onResume(); } @Override public void onPause() { super.onPause(); + if (mAMapNaviView != null) mAMapNaviView.onPause(); } @@ -149,7 +64,7 @@ public class TaxiAmapNaviFragment extends BaseTaxiUIFragment implements AMapNavi public void onDestroy() { super.onDestroy(); - NaviToDestinationModel.getInstance(getContext()).setVoiceIsMute(false); + AmapNaviToDestinationModel.getInstance(getContext()).setVoiceIsMute(false); if (mAMapNaviView != null){ mAMapNaviView.onDestroy(); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java index 2738e1420a..219d5090b8 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java @@ -22,11 +22,9 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.och.common.module.biz.constant.OchCommonConst; import com.mogo.och.common.module.biz.provider.LoginService; import com.mogo.och.taxi.R; -import com.mogo.och.taxi.constant.TaxiConst; import com.mogo.och.taxi.constant.TaxiOrderStatusEnum; import com.mogo.och.taxi.bean.OrderQueryRespBean; import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean; -import com.mogo.och.taxi.model.NaviToDestinationModel; import com.mogo.och.taxi.model.TaxiModel; import com.mogo.och.taxi.presenter.TaxiPresenter; import com.mogo.och.taxi.utils.TPRouteDataTestUtils; diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.java index 85e06be5bd..6ffc32d42e 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.java @@ -47,7 +47,7 @@ public class TaxiMapDirectionView implements IMoGoMapLocationListener, ITaxiMapDirectionView, AMap.OnCameraChangeListener { //小地图名称 - public static final String TAG = "TaxiMapDirectionView"; + public static final String TAG = "TPMapDirectionView"; private TextureMapView mAMapNaviView; private AMap mAMap; @@ -85,6 +85,7 @@ public class TaxiMapDirectionView } } + private void initView(Context context) { CallerLogger.INSTANCE.d(M_TAXI + TAG, "initView"); @@ -208,14 +209,11 @@ public class TaxiMapDirectionView @Override public void setLineMarker() { -// if (mStartMarker != null) { -// mStartMarker.setVisible(false); -// } -// if (mEndMarker != null) { -// mEndMarker.setVisible(false); -// } - if (mStartMarker.isVisible() && mStartMarker.isVisible()){ - return; + if (mStartMarker != null) { + mStartMarker.setVisible(false); + } + if (mEndMarker != null) { + mEndMarker.setVisible(false); } if (mCoordinatesLatLng.size() > 2) { // 设置开始结束Marker位置 @@ -231,7 +229,6 @@ public class TaxiMapDirectionView @Override public void drawablePolyline() { - setLineMarker(); if (mPolyline != null) { mPolyline.remove(); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiRottingNaviFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiRottingNaviFragment.java index 853c9ec895..e1318d866b 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiRottingNaviFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiRottingNaviFragment.java @@ -42,7 +42,14 @@ public class TaxiRottingNaviFragment extends MvpFragment latLngList){ + if (latLngList.size() > 0) { + if (mMapDirectionView != null) { + mMapDirectionView.setCoordinatesLatLng(latLngList); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + mMapDirectionView.setLineMarker(); + } + }); + } + } else { + clearPolyline(); + } + } + public void drawablePolylineByRoute(List mCoordinatesLatLng,int haveArrivedIndex){ if (mMapDirectionView != null){ mMapDirectionView.setCoordinatesLatLng(mCoordinatesLatLng,haveArrivedIndex); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java index eb8874dc3c..ce0f7bb40d 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java @@ -51,7 +51,7 @@ public class TaxiServerOrdersFragment extends BaseTaxiUIFragment { private ViewPager mTaxiOrderPager; private String[] mTabTitles = {"进行中","待服务"}; private List fragments = new ArrayList<>(); - private TaxiBeingServerdOrdersFragment beingServerdOrdersFragment = null; + private CommonBeingServerdOrdersFragment beingServerdOrdersFragment = null; private TaxiReserveOrdersFragment reserveOrdersFragment = null; @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @@ -82,7 +82,7 @@ public class TaxiServerOrdersFragment extends BaseTaxiUIFragment { if (0 == i){ mTaxiOrderTab.addTab(tab,true); changeTabLayoutTabUI(tab,true); - beingServerdOrdersFragment = TaxiBeingServerdOrdersFragment.newInstance(getActivity(),(TaxiFragment) getParentFragment()); + beingServerdOrdersFragment = CommonBeingServerdOrdersFragment.newInstance(getActivity(),(TaxiFragment) getParentFragment()); fragments.add(beingServerdOrdersFragment); }else if (1 == i){ mTaxiOrderTab.addTab(tab); diff --git a/OCH/mogo-och-taxi/src/main/res/layout/taxi_amap_navi_view.xml b/OCH/mogo-och-taxi/src/main/res/layout/taxi_amap_navi_view.xml index daf34f28bb..419da50519 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/taxi_amap_navi_view.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/taxi_amap_navi_view.xml @@ -8,7 +8,7 @@ app:cardUseCompatPadding="true" app:cardPreventCornerOverlap="false" app:cardBackgroundColor="@android:color/transparent"> - diff --git a/OCH/mogo-och-taxi/src/main/res/layout/taxi_rotting_navi_view.xml b/OCH/mogo-och-taxi/src/main/res/layout/taxi_rotting_navi_view.xml index 5d8207fd00..7d33b0f15a 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/taxi_rotting_navi_view.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/taxi_rotting_navi_view.xml @@ -1,16 +1,15 @@ - - + android:id="@+id/rotting_navi_view" + android:layout_width="match_parent" + android:layout_height="match_parent"/> + \ No newline at end of file