[2.12.0] taxi 司机端送驾高德导航

This commit is contained in:
wangmingjun
2022-10-23 16:21:41 +08:00
parent 6031102107
commit 295300c54f
18 changed files with 380 additions and 233 deletions

View File

@@ -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<NaviLatLng> sList = new ArrayList<NaviLatLng>();
protected final List<NaviLatLng> eList = new ArrayList<NaviLatLng>();
protected List<NaviLatLng> mWayPointList = new ArrayList<NaviLatLng>();
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) {
}
/**
* 车道信息说明
* <p>
* 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 = {
"直行"
, "左转"
, "左转或直行"
, "右转"
, "右转或这行"
, "左掉头"
, "左转或者右转"
, " 左转或右转或直行"
, "右转掉头"
, "直行或左转掉头"
, "直行或右转掉头"
, "左转或左掉头"
, "右转或右掉头"
, "直行并且车道扩展"
, "左转+左掉头+扩展"
, "不可以选择"
, "直行+左转+左掉头"
, "右转+左掉头"
, "左转+右转+左掉头"
, "直行+右转+左掉头"
, "左转+右掉头"
, "公交车道"
, "空车道"
, "可变车道"
};
}

View File

@@ -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(
"直行",
"左转",
"左转或直行",
"右转",
"右转或这行",
"左掉头",
"左转或者右转",
" 左转或右转或直行",
"右转掉头",
"直行或左转掉头",
"直行或右转掉头",
"左转或左掉头",
"右转或右掉头",
"直行并且车道扩展",
"左转+左掉头+扩展",
"不可以选择",
"直行+左转+左掉头",
"右转+左掉头",
"左转+右转+左掉头",
"直行+右转+左掉头",
"左转+右掉头",
"公交车道",
"空车道",
"可变车道"
)
}

View File

@@ -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);
}
}

View File

@@ -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;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 B

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<com.amap.api.navi.AMapNaviView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/amapNaviView"
android:layout_width="match_parent"
android:layout_height="match_parent" />

View File

@@ -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<MessagePad.Location> models) {
List<LatLng> 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() {

View File

@@ -69,7 +69,8 @@ public class NaviPresenter extends Presenter<TaxiRottingNaviFragment> implements
@Override
public void setLineMarker(List<LatLng> models) {
if (models == null) return;
runOnUIThread(() -> mView.setLineMarker(models));
}
@Override

View File

@@ -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() {

View File

@@ -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();
}

View File

@@ -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;

View File

@@ -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();
}

View File

@@ -42,7 +42,14 @@ public class TaxiRottingNaviFragment extends MvpFragment<TaxiRottingNaviFragment
@Override
protected void initViews() {
mMapDirectionView = findViewById(R.id.rotting_navi_view);
}
@Override
protected void initViews(Bundle savedInstanceState) {
super.initViews(savedInstanceState);
mMapDirectionView = mRootView.findViewById(R.id.rotting_navi_view);
mMapDirectionView.onCreateView(savedInstanceState);
}
@Override
@@ -80,6 +87,22 @@ public class TaxiRottingNaviFragment extends MvpFragment<TaxiRottingNaviFragment
}
}
public void setLineMarker(List<LatLng> 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<LatLng> mCoordinatesLatLng,int haveArrivedIndex){
if (mMapDirectionView != null){
mMapDirectionView.setCoordinatesLatLng(mCoordinatesLatLng,haveArrivedIndex);

View File

@@ -51,7 +51,7 @@ public class TaxiServerOrdersFragment extends BaseTaxiUIFragment {
private ViewPager mTaxiOrderPager;
private String[] mTabTitles = {"进行中","待服务"};
private List<Fragment> 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);

View File

@@ -8,7 +8,7 @@
app:cardUseCompatPadding="true"
app:cardPreventCornerOverlap="false"
app:cardBackgroundColor="@android:color/transparent">
<com.amap.api.navi.AMapNaviView
<com.mogo.och.common.module.map.CommonAmapNaviVIew
android:id="@+id/navi_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

View File

@@ -1,16 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cardCornerRadius="30px"
app:cardElevation="8px"
app:cardUseCompatPadding="true"
app:cardPreventCornerOverlap="false"
app:cardBackgroundColor="@android:color/transparent">
<com.mogo.och.taxi.ui.TaxiMapDirectionView
android:id="@+id/rotting_navi_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</androidx.cardview.widget.CardView>
android:id="@+id/rotting_navi_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</androidx.cardview.widget.CardView>