[driver passenger ] taxi乘客屏优化小地图问题
This commit is contained in:
@@ -53,6 +53,7 @@ dependencies {
|
||||
implementation rootProject.ext.dependencies.rxandroid
|
||||
implementation rootProject.ext.dependencies.androidxconstraintlayout
|
||||
implementation rootProject.ext.dependencies.amapnavi3dmap
|
||||
implementation rootProject.ext.dependencies.amapsearch
|
||||
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
|
||||
implementation rootProject.ext.dependencies.mogoutils
|
||||
implementation rootProject.ext.dependencies.mogocommons
|
||||
|
||||
@@ -7,5 +7,4 @@ package com.mogo.och.taxi.passenger.callback;
|
||||
public interface IOCHTaxiPassengerNaviChangedCallback {
|
||||
// 当前位置距离上车点的距离(米)、预估时间(秒) 、当前路的名称
|
||||
void onCurrentRoadName(String currentRoadName);
|
||||
void reInitNaviAmap(boolean isPlay,boolean isRestart);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
package com.mogo.och.taxi.passenger.model;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.amap.api.services.core.LatLonPoint;
|
||||
import com.amap.api.services.geocoder.GeocodeResult;
|
||||
import com.amap.api.services.geocoder.GeocodeSearch;
|
||||
import com.amap.api.services.geocoder.RegeocodeQuery;
|
||||
import com.amap.api.services.geocoder.RegeocodeResult;
|
||||
import com.amap.api.services.geocoder.RegeocodeRoad;
|
||||
import com.mogo.eagle.core.network.utils.GsonUtil;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerNaviChangedCallback;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P;
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2021/12/6
|
||||
*/
|
||||
public class TaxiPassengerGeocodeSearchModel implements GeocodeSearch.OnGeocodeSearchListener {
|
||||
|
||||
private final String TAG = TaxiPassengerGeocodeSearchModel.class.getSimpleName();
|
||||
|
||||
private static Context mContext;
|
||||
|
||||
private IOCHTaxiPassengerNaviChangedCallback mNaviChangedCallback;
|
||||
|
||||
GeocodeSearch mGeocodeSearch = null;
|
||||
|
||||
private String roadName = "";
|
||||
|
||||
private Timer timer ;
|
||||
|
||||
TimerTask timerTask;
|
||||
|
||||
public static TaxiPassengerGeocodeSearchModel getInstance(Context context) {
|
||||
mContext = context;
|
||||
return SingletonHolder.INSTANCE;
|
||||
}
|
||||
|
||||
private static final class SingletonHolder {
|
||||
private static final TaxiPassengerGeocodeSearchModel INSTANCE = new TaxiPassengerGeocodeSearchModel();
|
||||
}
|
||||
|
||||
private TaxiPassengerGeocodeSearchModel(){
|
||||
}
|
||||
|
||||
public void initGeocodeSearch(){
|
||||
//通过经纬度逆地理编码得到位置
|
||||
mGeocodeSearch = new GeocodeSearch(mContext);
|
||||
mGeocodeSearch.setOnGeocodeSearchListener(this);
|
||||
timer = new Timer();
|
||||
timerTask = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (mNaviChangedCallback != null){
|
||||
CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "roadName道路名称: " + roadName);
|
||||
mNaviChangedCallback.onCurrentRoadName(roadName);
|
||||
}
|
||||
}
|
||||
};
|
||||
try{
|
||||
timer.schedule(timerTask,500,2000);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void searchLocationInfo(double lat, double lon){
|
||||
if (null != mGeocodeSearch){
|
||||
LatLonPoint latLng = new LatLonPoint(lat, lon);
|
||||
//第一个参数表示一个Latlng,第二参数表示范围多少米,第三个参数表示是火系坐标系还是GPS原生坐标系
|
||||
RegeocodeQuery query = new RegeocodeQuery(latLng, 200, GeocodeSearch.AMAP);
|
||||
mGeocodeSearch.getFromLocationAsyn(query);
|
||||
}
|
||||
}
|
||||
|
||||
public void destroyGeocodeSearch(){
|
||||
CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "destroyGeocodeSearch");
|
||||
if (mGeocodeSearch != null){
|
||||
mGeocodeSearch = null;
|
||||
}
|
||||
if (mNaviChangedCallback != null){
|
||||
mNaviChangedCallback = null;
|
||||
}
|
||||
if (null != timer){
|
||||
timer.cancel();
|
||||
}
|
||||
if (null != timerTask){
|
||||
timerTask = null;
|
||||
}
|
||||
roadName = "";
|
||||
}
|
||||
|
||||
public void setOCHTaciNaviChangedCallback(IOCHTaxiPassengerNaviChangedCallback callback){
|
||||
this.mNaviChangedCallback = callback;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {//更新频率几十 ms, 暂定更新UI为2s一次
|
||||
if (regeocodeResult != null) {
|
||||
List<RegeocodeRoad> roads = regeocodeResult.getRegeocodeAddress().getRoads();
|
||||
CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "位置roads:" + GsonUtil.jsonFromObject(roads));
|
||||
if (roads != null && roads.size() > 0){
|
||||
roadName = roads.get(0).getName();//当前路的名字
|
||||
// mNaviChangedCallback.onCurrentRoadName(roads.get(0).getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGeocodeSearched(GeocodeResult geocodeResult, int i) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,6 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.amap.api.maps.model.LatLng;
|
||||
import com.amap.api.navi.model.NaviLatLng;
|
||||
import com.elegant.network.utils.GsonUtil;
|
||||
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
|
||||
import com.mogo.cloud.commons.utils.CoordinateUtils;
|
||||
@@ -53,7 +52,6 @@ import com.mogo.service.statusmanager.StatusDescriptor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -471,6 +469,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
|
||||
}
|
||||
mLongitude = location.getLongitude();
|
||||
mLatitude = location.getLatitude();
|
||||
CallerLogger.INSTANCE.e(M_TAXI_P + TAG,"mLongitude = "+mLongitude+", mLatitude = "+mLatitude);
|
||||
for (IOCHTaxiPassengerControllerStatusCallback callback :mControllerStatusCallbackMap.values()){
|
||||
callback.onCarLocationChanged(location);
|
||||
}
|
||||
@@ -592,16 +591,17 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
|
||||
/**
|
||||
* 导航订单起点到终点 获得剩余时间,里程,预计到达时间
|
||||
*/
|
||||
public void naviOrderStartToEnd() {
|
||||
TaxiPassengerNaviToDestinationModel.getInstance(mContext).destroyAmaNavi();
|
||||
public void initGeocodeSearch() {
|
||||
if (mCurrentOCHOrder != null){
|
||||
NaviLatLng startNaviLatLng = new NaviLatLng(mLatitude,mLongitude);
|
||||
NaviLatLng endNaviLatLng = new NaviLatLng(mCurrentOCHOrder.endSiteGcjPoint.get(1),mCurrentOCHOrder.endSiteGcjPoint.get(0));
|
||||
TaxiPassengerNaviToDestinationModel.getInstance(mContext).initAMapNavi(startNaviLatLng, endNaviLatLng);
|
||||
TaxiPassengerNaviToDestinationModel.getInstance(mContext).setOCHTaciNaviChangedCallback(this);
|
||||
TaxiPassengerGeocodeSearchModel.getInstance(mContext).initGeocodeSearch();
|
||||
TaxiPassengerGeocodeSearchModel.getInstance(mContext).setOCHTaciNaviChangedCallback(this);
|
||||
}
|
||||
}
|
||||
|
||||
public void destoryGeocodeSearch(){
|
||||
TaxiPassengerGeocodeSearchModel.getInstance(mContext).destroyGeocodeSearch();
|
||||
}
|
||||
|
||||
public void startOrStopQueryOrderRemaining(boolean isStart){
|
||||
if (isStart){
|
||||
TaxiPassengerModelLoopManager.getInstance().startQueryOrderRemainingtLoop();
|
||||
@@ -661,17 +661,11 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reInitNaviAmap(boolean isPlay, boolean isRestart) {
|
||||
naviOrderStartToEnd();
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单结束或者取消的时候, 刷新导航标识位以及缓存的数据
|
||||
*/
|
||||
public void recoverNaviInfo(){
|
||||
SharedPrefsMgr.getInstance(mContext).remove(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS);
|
||||
TaxiPassengerNaviToDestinationModel.getInstance(mContext).setFirstcalculateDriveRoute(0);
|
||||
}
|
||||
|
||||
public void calculateRouteLineSum(List<LatLng> points){
|
||||
|
||||
@@ -1,335 +0,0 @@
|
||||
package com.mogo.och.taxi.passenger.model;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.amap.api.navi.AMapNavi;
|
||||
import com.amap.api.navi.AMapNaviListener;
|
||||
import com.amap.api.navi.enums.NaviType;
|
||||
import com.amap.api.navi.model.AMapCalcRouteResult;
|
||||
import com.amap.api.navi.model.AMapLaneInfo;
|
||||
import com.amap.api.navi.model.AMapModelCross;
|
||||
import com.amap.api.navi.model.AMapNaviCameraInfo;
|
||||
import com.amap.api.navi.model.AMapNaviCross;
|
||||
import com.amap.api.navi.model.AMapNaviInfo;
|
||||
import com.amap.api.navi.model.AMapNaviLocation;
|
||||
import com.amap.api.navi.model.AMapNaviRouteNotifyData;
|
||||
import com.amap.api.navi.model.AMapNaviTrafficFacilityInfo;
|
||||
import com.amap.api.navi.model.AMapServiceAreaInfo;
|
||||
import com.amap.api.navi.model.AimLessModeCongestionInfo;
|
||||
import com.amap.api.navi.model.AimLessModeStat;
|
||||
import com.amap.api.navi.model.NaviInfo;
|
||||
import com.amap.api.navi.model.NaviLatLng;
|
||||
import com.autonavi.tbt.TrafficFacilityInfo;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerNaviChangedCallback;
|
||||
import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst;
|
||||
import com.mogo.och.taxi.passenger.utils.PermissionUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2021/12/6
|
||||
*/
|
||||
public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener {
|
||||
|
||||
private final String TAG = TaxiPassengerNaviToDestinationModel.class.getSimpleName();
|
||||
|
||||
private static Context mContext;
|
||||
private AMapNavi mAMapNavi = null;
|
||||
protected final List<NaviLatLng> sList = new ArrayList<NaviLatLng>();
|
||||
protected final List<NaviLatLng> eList = new ArrayList<NaviLatLng>();
|
||||
protected List<NaviLatLng> mWayPointList = new ArrayList<NaviLatLng>();
|
||||
private IOCHTaxiPassengerNaviChangedCallback mNaviChangedCallback;
|
||||
// private AtomicInteger errorCount = new AtomicInteger(0); //只要订单在 如果算错就重新算,不再有次数限制
|
||||
private boolean isPlay;
|
||||
|
||||
private volatile int mFirstcalculateDriveRoute = 0;
|
||||
public void setFirstcalculateDriveRoute(int firstcalculateDriveRoute) {
|
||||
this.mFirstcalculateDriveRoute = firstcalculateDriveRoute;
|
||||
}
|
||||
|
||||
|
||||
public static TaxiPassengerNaviToDestinationModel getInstance(Context context) {
|
||||
mContext = context;
|
||||
return SingletonHolder.INSTANCE;
|
||||
}
|
||||
|
||||
private static final class SingletonHolder {
|
||||
private static final TaxiPassengerNaviToDestinationModel INSTANCE = new TaxiPassengerNaviToDestinationModel();
|
||||
}
|
||||
private TaxiPassengerNaviToDestinationModel(){
|
||||
}
|
||||
public void initAMapNavi(NaviLatLng startLatLng,NaviLatLng endLatLng) {
|
||||
try {
|
||||
mAMapNavi = AMapNavi.getInstance(mContext);
|
||||
mAMapNavi.addAMapNaviListener(this);
|
||||
mAMapNavi.setUseInnerVoice(true, true);
|
||||
mAMapNavi.stopSpeak();
|
||||
sList.add(startLatLng);
|
||||
eList.add(endLatLng);
|
||||
int strategy = 0;
|
||||
try {
|
||||
//再次强调,最后一个参数为true时代表多路径,否则代表单路径
|
||||
strategy = mAMapNavi.strategyConvert(true, false, false, false, false);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
mAMapNavi.calculateDriveRoute(sList, eList, mWayPointList, strategy);
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
public void setVoiceIsMute(boolean isPlay){
|
||||
if (mAMapNavi == null) return;
|
||||
this.isPlay = isPlay;
|
||||
if (isPlay){
|
||||
mAMapNavi.startSpeak();
|
||||
}else {
|
||||
mAMapNavi.stopSpeak();
|
||||
}
|
||||
}
|
||||
|
||||
public void destroyAmaNavi(){
|
||||
if (mAMapNavi != null){
|
||||
isPlay = false;
|
||||
mAMapNavi.stopNavi();
|
||||
mAMapNavi.destroy();
|
||||
mAMapNavi = null;
|
||||
mNaviChangedCallback = null;
|
||||
sList.clear();
|
||||
eList.clear();
|
||||
}
|
||||
}
|
||||
|
||||
public void setOCHTaciNaviChangedCallback(IOCHTaxiPassengerNaviChangedCallback callback){
|
||||
this.mNaviChangedCallback = callback;
|
||||
}
|
||||
@Override
|
||||
public void onInitNaviFailure() {
|
||||
Toast.makeText(mContext, "init navi Failed", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInitNaviSuccess() {
|
||||
//初始化成功
|
||||
}
|
||||
@Override
|
||||
public void onCalculateRouteSuccess(int[] ints) {
|
||||
//多路径算路成功回调
|
||||
CallerLogger.INSTANCE.d(M_TAXI_P + TAG,"onCalculateRouteSuccess");
|
||||
mAMapNavi.startNavi(NaviType.GPS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNaviInfoUpdate(NaviInfo naviinfo) {
|
||||
//导航过程中的信息更新,请看NaviInfo的具体说明
|
||||
CallerLogger.INSTANCE.d(M_TAXI_P + TAG,"naviinfo = "+naviinfo.getPathRetainDistance()+" ,"+naviinfo.getPathRetainTime()
|
||||
+" ,"+naviinfo.getCurrentRoadName());
|
||||
|
||||
if (mFirstcalculateDriveRoute == 0 && SharedPrefsMgr.getInstance(mContext).getInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,0) == 0){
|
||||
mFirstcalculateDriveRoute = 1;
|
||||
SharedPrefsMgr.getInstance(mContext).putInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,naviinfo.getPathRetainDistance());
|
||||
}
|
||||
if (null != mNaviChangedCallback){
|
||||
mNaviChangedCallback.onCurrentRoadName(naviinfo.getCurrentRoadName());//当前路的名字
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCalculateRouteSuccess(AMapCalcRouteResult aMapCalcRouteResult) {
|
||||
// errorCount.set(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCalculateRouteFailure(AMapCalcRouteResult result) {
|
||||
//路线计算失败
|
||||
//多路径算路成功回调
|
||||
// if (errorCount.get() < 20){
|
||||
// errorCount.getAndIncrement();
|
||||
if (mNaviChangedCallback != null){
|
||||
mNaviChangedCallback.reInitNaviAmap(isPlay,true);
|
||||
}
|
||||
// }
|
||||
if (!NetworkUtils.isConnected(mContext) || result.getErrorCode() == 2){
|
||||
if (mNaviChangedCallback != null){
|
||||
mNaviChangedCallback.reInitNaviAmap(isPlay,false);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (!PermissionUtil.isLocServiceEnable(mContext) || !PermissionUtil.checkPermission(mContext,new String[]{Manifest.permission.ACCESS_FINE_LOCATION})){
|
||||
if (mNaviChangedCallback != null){
|
||||
mNaviChangedCallback.reInitNaviAmap(isPlay,false);
|
||||
}
|
||||
return;
|
||||
}
|
||||
// if (result.getErrorCode() == 3){
|
||||
// TipToast.longTip("车辆当前坐标错误");
|
||||
// }else if (result.getErrorCode() == 6){
|
||||
// TipToast.longTip("终点坐标错误");
|
||||
// }
|
||||
CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "路线计算失败:错误码=" + result.getErrorCode() + ",Error Message= " + result.getErrorDetail());
|
||||
CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "错误码详细链接见:http://lbs.amap.com/api/android-navi-sdk/guide/tools/errorcode/");
|
||||
}
|
||||
@Override
|
||||
public void onStartNavi(int type) {
|
||||
//开始导航回调
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTrafficStatusUpdate() {
|
||||
//
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLocationChange(AMapNaviLocation location) {
|
||||
//当前位置回调
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGetNavigationText(int type, String text) {
|
||||
//播报类型和播报文字回调
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGetNavigationText(String s) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEndEmulatorNavi() {
|
||||
//结束模拟导航
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArriveDestination() {
|
||||
//到达目的地
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCalculateRouteFailure(int errorInfo) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReCalculateRouteForYaw() {
|
||||
//偏航后重新计算路线回调
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReCalculateRouteForTrafficJam() {
|
||||
//拥堵后重新计算路线回调
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArrivedWayPoint(int wayID) {
|
||||
//到达途径点
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGpsOpenStatus(boolean enabled) {
|
||||
//GPS开关状态回调
|
||||
}
|
||||
@Override
|
||||
public void showModeCross(AMapModelCross aMapModelCross) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hideModeCross() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateIntervalCameraInfo(AMapNaviCameraInfo aMapNaviCameraInfo, AMapNaviCameraInfo aMapNaviCameraInfo1, int i) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showLaneInfo(AMapLaneInfo aMapLaneInfo) {
|
||||
//显示车道信息
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNaviRouteNotify(AMapNaviRouteNotifyData aMapNaviRouteNotifyData) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCameraInfo(AMapNaviCameraInfo[] aMapCameraInfos) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceAreaUpdate(AMapServiceAreaInfo[] amapServiceAreaInfos) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNaviInfoUpdated(AMapNaviInfo aMapNaviInfo) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo aMapNaviTrafficFacilityInfo) {
|
||||
//已过时
|
||||
}
|
||||
|
||||
@Override
|
||||
public void OnUpdateTrafficFacility(TrafficFacilityInfo trafficFacilityInfo) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showCross(AMapNaviCross aMapNaviCross) {
|
||||
//显示放大图回调
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hideCross() {
|
||||
//隐藏放大图回调
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showLaneInfo(AMapLaneInfo[] laneInfos, byte[] laneBackgroundInfo, byte[] laneRecommendedInfo) {
|
||||
//过时
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hideLaneInfo() {
|
||||
//隐藏车道信息
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyParallelRoad(int i) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos) {
|
||||
//更新交通设施信息
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateAimlessModeStatistics(AimLessModeStat aimLessModeStat) {
|
||||
//更新巡航模式的统计信息
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void updateAimlessModeCongestionInfo(AimLessModeCongestionInfo aimLessModeCongestionInfo) {
|
||||
//更新巡航模式的拥堵信息
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayRing(int i) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -19,8 +19,8 @@ import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback;
|
||||
import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum;
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerGeocodeSearchModel;
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerModel;
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerNaviToDestinationModel;
|
||||
import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment;
|
||||
|
||||
/**
|
||||
@@ -146,6 +146,7 @@ public class BaseTaxiPassengerPresenter extends Presenter<TaxiPassengerBaseFragm
|
||||
if (TaxiPassengerOrderStatusEnum.Cancel.getCode() == order.orderStatus){
|
||||
runOnUIThread(() -> mView.showOrHideServingOrderFragment(false));
|
||||
TaxiPassengerModel.getInstance().recoverNaviInfo();
|
||||
TaxiPassengerGeocodeSearchModel.getInstance(getContext()).destroyGeocodeSearch();
|
||||
return;
|
||||
}
|
||||
if (TaxiPassengerOrderStatusEnum.ArriveAtStart.getCode() == order.orderStatus
|
||||
@@ -155,7 +156,7 @@ public class BaseTaxiPassengerPresenter extends Presenter<TaxiPassengerBaseFragm
|
||||
}
|
||||
if (TaxiPassengerOrderStatusEnum.ArriveAtEnd.getCode() == order.orderStatus){
|
||||
TaxiPassengerModel.getInstance().recoverNaviInfo();
|
||||
TaxiPassengerNaviToDestinationModel.getInstance(getContext()).destroyAmaNavi();
|
||||
TaxiPassengerGeocodeSearchModel.getInstance(getContext()).destroyGeocodeSearch();
|
||||
runOnUIThread(() -> {
|
||||
mView.showOrHideServingOrderFragment(false);
|
||||
mView.showOrHideArrivedEndLayout(true, order.endSiteAddr);
|
||||
@@ -167,6 +168,7 @@ public class BaseTaxiPassengerPresenter extends Presenter<TaxiPassengerBaseFragm
|
||||
mView.showOrHideServingOrderFragment(false);
|
||||
mView.showOrHideArrivedEndLayout(false, "");
|
||||
});
|
||||
TaxiPassengerGeocodeSearchModel.getInstance(getContext()).destroyGeocodeSearch();
|
||||
mCurrentPassengerOrder = null;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCal
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback;
|
||||
import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum;
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerGeocodeSearchModel;
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerModel;
|
||||
import com.mogo.och.taxi.passenger.ui.TaxiPassengerServingOrderFragment;
|
||||
|
||||
@@ -131,6 +132,7 @@ public class TaxiPassengerServingOrderPresenter extends Presenter<TaxiPassengerS
|
||||
public void onCarLocationChanged(Location location) {
|
||||
if (location != null){
|
||||
runOnUIThread(() -> mView.onCarLocationChanged(location));
|
||||
TaxiPassengerGeocodeSearchModel.getInstance(getContext()).searchLocationInfo(location.getLatitude(),location.getLongitude());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -173,7 +173,6 @@ public class TaxiPassengerMapDirectionView
|
||||
|
||||
@Override
|
||||
public void onLocationChanged(@org.jetbrains.annotations.Nullable MogoLocation location, int from) {
|
||||
CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "onCarLocationChanged2 :" + location.getLatitude()+":"+location.getLongitude());
|
||||
if (location == null){
|
||||
return;
|
||||
}
|
||||
@@ -187,19 +186,21 @@ public class TaxiPassengerMapDirectionView
|
||||
boundsBuilder.include(currentLatLng);
|
||||
boundsBuilder.include(endLatLng);
|
||||
//第二个参数为四周留空宽度
|
||||
mAMap.animateCamera(CameraUpdateFactory.newLatLngBoundsRect(boundsBuilder.build(), 100,100,100,100));
|
||||
mAMap.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(boundsBuilder.build(), 100,100,100,100));
|
||||
CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "onCarLocationChanged2--moveCamera :" + location.getLatitude()+", "+location.getLongitude());
|
||||
|
||||
} else {
|
||||
//设置希望展示的地图缩放级别
|
||||
CameraPosition cameraPosition = new CameraPosition.Builder()
|
||||
.target(mCarMarker.getPosition()).tilt(0).bearing(location.getBearing()).zoom(zoomLevel).build();
|
||||
mAMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
|
||||
mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
|
||||
}
|
||||
//更新车辆位置
|
||||
if (mCarMarker != null) {
|
||||
CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "location.getBearing() = " + location.getBearing());
|
||||
// CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "location.getBearing() = " + location.getBearing());
|
||||
mCarMarker.setRotateAngle(360 - location.getBearing());
|
||||
mCarMarker.setPosition(currentLatLng);
|
||||
// CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "onCarLocationChanged2--loacation :" + location.getLatitude()+", "+location.getLongitude());
|
||||
mCarMarker.setToTop();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,21 +28,13 @@ import com.mogo.och.taxi.passenger.callback.ITaxiPassengerMapViewCallback;
|
||||
import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst;
|
||||
import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum;
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerModel;
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerNaviToDestinationModel;
|
||||
import com.mogo.och.taxi.passenger.presenter.TaxiPassengerServingOrderPresenter;
|
||||
import com.mogo.och.taxi.passenger.utils.TPRouteDataTestUtils;
|
||||
import com.mogo.och.taxi.passenger.utils.TaxiPassengerUtils;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2022/3/8
|
||||
@@ -168,7 +160,9 @@ public class TaxiPassengerServingOrderFragment extends
|
||||
}
|
||||
|
||||
private void updateDriveRoadName(String currentRoadName){
|
||||
mProgessDes.setText(currentRoadName);
|
||||
if (mProgessDes != null){
|
||||
mProgessDes.setText(currentRoadName);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -177,18 +171,19 @@ public class TaxiPassengerServingOrderFragment extends
|
||||
if (mMapDirectionView != null) {
|
||||
mMapDirectionView.onResume();
|
||||
}
|
||||
TaxiPassengerModel.getInstance().naviOrderStartToEnd();
|
||||
TaxiPassengerModel.getInstance().initGeocodeSearch();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHiddenChanged(boolean hidden) {
|
||||
super.onHiddenChanged(hidden);
|
||||
|
||||
if (hidden){//fragment 隐藏, 导航取消
|
||||
if (hidden){//fragment 隐藏, 导航取消c
|
||||
clearPolyline();
|
||||
TaxiPassengerNaviToDestinationModel.getInstance(getContext()).destroyAmaNavi();
|
||||
TaxiPassengerModel.getInstance().destoryGeocodeSearch();
|
||||
}else { //fragment 显示, 导航开始
|
||||
TaxiPassengerModel.getInstance().naviOrderStartToEnd();
|
||||
CallerLogger.INSTANCE.e(M_TAXI_P +"TaxiPassengerNaviTo","initGeocodeSearch");
|
||||
TaxiPassengerModel.getInstance().initGeocodeSearch();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,7 +202,7 @@ public class TaxiPassengerServingOrderFragment extends
|
||||
if (mMapDirectionView != null) {
|
||||
mMapDirectionView.onDestroy();
|
||||
}
|
||||
TaxiPassengerNaviToDestinationModel.getInstance(getContext()).destroyAmaNavi();
|
||||
TaxiPassengerModel.getInstance().destoryGeocodeSearch();
|
||||
}
|
||||
|
||||
public void routeResult(List<MogoLatLng> latLngList) {
|
||||
|
||||
@@ -348,7 +348,7 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
|
||||
findViewById(R.id.test_bar_on_the_way_to_end).setOnClickListener(v -> {
|
||||
showNotice("自动驾驶已启动,请系好安全带");
|
||||
TaxiModel.getInstance().setOnTheWayToEndStation();
|
||||
testRouteInfoUpload();
|
||||
// testRouteInfoUpload();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user