opt
This commit is contained in:
@@ -14,7 +14,6 @@ import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.animation.Interpolator;
|
||||
|
||||
import com.alibaba.idst.nls.internal.utils.L;
|
||||
import com.amap.api.maps.AMap;
|
||||
import com.amap.api.maps.AMapUtils;
|
||||
import com.amap.api.maps.CameraUpdateFactory;
|
||||
@@ -47,6 +46,7 @@ import com.mogo.map.impl.amap.utils.MogoMapUtils;
|
||||
import com.mogo.map.impl.amap.utils.ObjectUtils;
|
||||
import com.mogo.map.listener.MogoMapListenerHandler;
|
||||
import com.mogo.map.marker.IMogoMarker;
|
||||
import com.mogo.map.uicontroller.CarCursorOption;
|
||||
import com.mogo.map.uicontroller.EnumMapUI;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.map.uicontroller.MapControlResult;
|
||||
@@ -87,6 +87,11 @@ public class AMapNaviViewWrapper implements IMogoMapView,
|
||||
private boolean mIsCarLocked = false;
|
||||
|
||||
private float mDefaultZoomLevel = 16.0f;
|
||||
private final CarCursorOption DEFAULT_OPTION = new CarCursorOption.Builder()
|
||||
.carCursorRes( R.drawable.map_api_ic_current_location2 )
|
||||
.naviCursorRes( R.drawable.ic_amap_navi_cursor )
|
||||
.build();
|
||||
private CarCursorOption mCarCursorOption = DEFAULT_OPTION;
|
||||
|
||||
public AMapNaviViewWrapper( AMapNaviView mapView ) {
|
||||
this.mMapView = mapView;
|
||||
@@ -113,8 +118,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
|
||||
// 设置路线相关的配置属性,如:路线的路况颜色,路线上是否显示摄像头气泡等。
|
||||
// options.setRouteOverlayOptions( MapStyleUtils.getRouteOverlayOptions() );
|
||||
// 设置自车的图片对象
|
||||
options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(),
|
||||
R.drawable.ic_amap_navi_cursor ) );
|
||||
options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(), DEFAULT_OPTION.getNaviCursorRes() ) );
|
||||
// 设置指南针图标否在导航界面显示,默认显示。true,显示;false,隐藏。
|
||||
options.setCompassEnabled( false );
|
||||
// 黑夜模式
|
||||
@@ -463,10 +467,10 @@ public class AMapNaviViewWrapper implements IMogoMapView,
|
||||
break;
|
||||
case NorthUP_2D:
|
||||
mMapView.setNaviMode( AMapNaviView.NORTH_UP_MODE );
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
Logger.d(TAG,"mCurrentUIMode--->"+mCurrentUIMode.name());
|
||||
Logger.d( TAG, "mCurrentUIMode--->" + mCurrentUIMode.name() );
|
||||
if ( options == null ) {
|
||||
return;
|
||||
}
|
||||
@@ -517,7 +521,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
|
||||
style.showMyLocation( visible );
|
||||
if ( visible ) {
|
||||
// 强制刷新一遍车标
|
||||
style.myLocationIcon( BitmapDescriptorFactory.fromResource( R.drawable.map_api_ic_current_location2 ) );
|
||||
style.myLocationIcon( BitmapDescriptorFactory.fromResource( mCarCursorOption.getCarCursorRes() ) );
|
||||
}
|
||||
mMapView.getMap().setMyLocationStyle( style );
|
||||
}
|
||||
@@ -840,4 +844,37 @@ public class AMapNaviViewWrapper implements IMogoMapView,
|
||||
public synchronized boolean isCarLocked() {
|
||||
return mIsCarLocked;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCarCursorOption( CarCursorOption option ) {
|
||||
if ( mCarCursorOption != null ) {
|
||||
mCarCursorOption.destroy();
|
||||
}
|
||||
try {
|
||||
mCarCursorOption = option.clone();
|
||||
} catch ( CloneNotSupportedException e ) {
|
||||
mCarCursorOption = DEFAULT_OPTION;
|
||||
}
|
||||
if ( !checkAMapView() ) {
|
||||
return;
|
||||
}
|
||||
AMapNaviViewOptions options = mMapView.getViewOptions();
|
||||
if ( options != null && mCarCursorOption.getNaviCursorRes() != 0 ) {
|
||||
options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(), mCarCursorOption.getNaviCursorRes() ) );
|
||||
mMapView.setViewOptions( options );
|
||||
}
|
||||
|
||||
if ( mMapView.getMap() == null ) {
|
||||
return;
|
||||
}
|
||||
MyLocationStyle style = mMapView.getMap().getMyLocationStyle();
|
||||
if ( mCarCursorOption.getCarCursorBmp() != null && !mCarCursorOption.getCarCursorBmp().isRecycled() ) {
|
||||
style.myLocationIcon( BitmapDescriptorFactory.fromBitmap( mCarCursorOption.getCarCursorBmp() ) );
|
||||
} else {
|
||||
if ( mCarCursorOption.getCarCursorRes() != 0 ) {
|
||||
style.myLocationIcon( BitmapDescriptorFactory.fromResource( mCarCursorOption.getCarCursorRes() ) );
|
||||
}
|
||||
}
|
||||
mMapView.getMap().setMyLocationStyle( style );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import android.view.animation.Interpolator;
|
||||
import com.mogo.map.MogoLatLng;
|
||||
import com.mogo.map.MogoMap;
|
||||
import com.mogo.map.marker.IMogoMarker;
|
||||
import com.mogo.map.uicontroller.CarCursorOption;
|
||||
import com.mogo.map.uicontroller.EnumMapUI;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.map.uicontroller.MapControlResult;
|
||||
@@ -252,4 +253,11 @@ public class AMapUIController implements IMogoMapUIController {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCarCursorOption( CarCursorOption option ) {
|
||||
if ( mClient != null ) {
|
||||
mClient.setCarCursorOption( option );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
package com.mogo.map.uicontroller;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
|
||||
import androidx.annotation.DrawableRes;
|
||||
|
||||
import com.mogo.map.IDestroyable;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
* @since 2020-04-13
|
||||
* <p>
|
||||
* 设置自车图标
|
||||
*/
|
||||
public class CarCursorOption implements Cloneable, IDestroyable {
|
||||
|
||||
private CarCursorOption() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 自车图标资源
|
||||
*/
|
||||
@DrawableRes
|
||||
private int mCarCursorRes = 0;
|
||||
|
||||
/**
|
||||
* 自车图标图片,优先使用
|
||||
*/
|
||||
private Bitmap mCarCursorBmp;
|
||||
|
||||
/**
|
||||
* 导航图标资源
|
||||
*/
|
||||
@DrawableRes
|
||||
private int mNaviCursorRes = 0;
|
||||
|
||||
public int getCarCursorRes() {
|
||||
return mCarCursorRes;
|
||||
}
|
||||
|
||||
public void setCarCursorRes( int carCursorRes ) {
|
||||
this.mCarCursorRes = carCursorRes;
|
||||
}
|
||||
|
||||
public Bitmap getCarCursorBmp() {
|
||||
return mCarCursorBmp;
|
||||
}
|
||||
|
||||
public void setCarCursorBmp( Bitmap carCursorBmp ) {
|
||||
this.mCarCursorBmp = carCursorBmp;
|
||||
}
|
||||
|
||||
public int getNaviCursorRes() {
|
||||
return mNaviCursorRes;
|
||||
}
|
||||
|
||||
public void setNaviCursorRes( int naviCursorRes ) {
|
||||
this.mNaviCursorRes = naviCursorRes;
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
|
||||
private CarCursorOption target;
|
||||
|
||||
public Builder() {
|
||||
target = new CarCursorOption();
|
||||
}
|
||||
|
||||
/**
|
||||
* 自车图标资源
|
||||
*/
|
||||
public Builder carCursorRes( @DrawableRes int redId ) {
|
||||
target.mCarCursorRes = redId;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 自车图标图片,优先使用
|
||||
*/
|
||||
public Builder carCursorBmp( Bitmap bmp ) {
|
||||
target.mCarCursorBmp = bmp;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 导航图标资源
|
||||
*
|
||||
* @param naviCursorRes
|
||||
* @return
|
||||
*/
|
||||
public Builder naviCursorRes( int naviCursorRes ) {
|
||||
target.mNaviCursorRes = naviCursorRes;
|
||||
return this;
|
||||
}
|
||||
|
||||
public CarCursorOption build() {
|
||||
return target;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CarCursorOption clone() throws CloneNotSupportedException {
|
||||
CarCursorOption option = ( CarCursorOption ) super.clone();
|
||||
if ( mCarCursorBmp != null && !mCarCursorBmp.isRecycled() ) {
|
||||
try {
|
||||
option.mCarCursorBmp = Bitmap.createBitmap( mCarCursorBmp );
|
||||
} catch ( Exception e ) {
|
||||
option.mCarCursorBmp = null;
|
||||
}
|
||||
}
|
||||
option.mCarCursorRes = mCarCursorRes;
|
||||
option.mNaviCursorRes = mNaviCursorRes;
|
||||
return option;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
if ( mCarCursorBmp != null && !mCarCursorBmp.isRecycled() ) {
|
||||
mCarCursorBmp.recycle();
|
||||
}
|
||||
mCarCursorBmp = null;
|
||||
mCarCursorRes = 0;
|
||||
mNaviCursorRes = 0;
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,8 @@ import android.location.Location;
|
||||
import android.view.View;
|
||||
import android.view.animation.Interpolator;
|
||||
|
||||
import androidx.annotation.DrawableRes;
|
||||
|
||||
import com.mogo.map.MogoLatLng;
|
||||
import com.mogo.map.marker.IMogoMarker;
|
||||
|
||||
@@ -56,7 +58,6 @@ public interface IMogoMapUIController {
|
||||
void showMyLocation( boolean visible );
|
||||
|
||||
/**
|
||||
*
|
||||
* @param view
|
||||
*/
|
||||
void showMyLocation( View view );
|
||||
@@ -183,7 +184,15 @@ public interface IMogoMapUIController {
|
||||
|
||||
/**
|
||||
* 锁车状态
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
boolean isCarLocked();
|
||||
|
||||
/**
|
||||
* 配置自车图标样式
|
||||
*
|
||||
* @param option
|
||||
*/
|
||||
void setCarCursorOption( CarCursorOption option );
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.view.animation.Interpolator;
|
||||
|
||||
import com.mogo.map.impl.amap.uicontroller.AMapUIController;
|
||||
import com.mogo.map.marker.IMogoMarker;
|
||||
import com.mogo.map.uicontroller.CarCursorOption;
|
||||
import com.mogo.map.uicontroller.EnumMapUI;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.map.uicontroller.MapControlResult;
|
||||
@@ -245,4 +246,11 @@ public class MogoMapUIController implements IMogoMapUIController {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCarCursorOption( CarCursorOption option ) {
|
||||
if ( mDelegate != null ) {
|
||||
mDelegate.setCarCursorOption( option );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.mogo.commons.mvp.MvpFragment;
|
||||
@@ -26,12 +25,12 @@ import com.mogo.map.navi.MogoCongestionInfo;
|
||||
import com.mogo.map.navi.MogoNaviInfo;
|
||||
import com.mogo.map.navi.MogoTraffic;
|
||||
import com.mogo.map.overlay.IMogoPolyline;
|
||||
import com.mogo.map.uicontroller.CarCursorOption;
|
||||
import com.mogo.map.uicontroller.EnumMapUI;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant;
|
||||
import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener;
|
||||
import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager;
|
||||
import com.mogo.module.common.MogoModulePaths;
|
||||
import com.mogo.module.common.map.MapCenterPointStrategy;
|
||||
import com.mogo.module.common.map.Scene;
|
||||
import com.mogo.module.extensions.ExtensionsModuleConst;
|
||||
@@ -42,12 +41,10 @@ import com.mogo.module.share.ShareControl;
|
||||
import com.mogo.service.IMogoServiceApis;
|
||||
import com.mogo.service.MogoServicePaths;
|
||||
import com.mogo.service.analytics.IMogoAnalytics;
|
||||
import com.mogo.service.fragmentmanager.FragmentDescriptor;
|
||||
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
|
||||
import com.mogo.service.intent.IMogoIntentListener;
|
||||
import com.mogo.service.map.IMogoMapService;
|
||||
import com.mogo.service.module.IMogoAddressManager;
|
||||
import com.mogo.service.module.IMogoModuleProvider;
|
||||
import com.mogo.service.module.IMogoRegisterCenter;
|
||||
import com.mogo.service.statusmanager.IMogoStatusManager;
|
||||
|
||||
@@ -108,9 +105,8 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
|
||||
* 搜索莫模块
|
||||
*/
|
||||
private boolean mIsLock = true;
|
||||
private TextView ivMode;
|
||||
private TextView mCameraMode;
|
||||
|
||||
private IMogoPolyline iMogoPolyline;
|
||||
public static boolean isClickShare;
|
||||
|
||||
@Override
|
||||
@@ -193,18 +189,15 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
|
||||
}
|
||||
} );
|
||||
|
||||
ivMode = findViewById( R.id.module_ext_id_north );
|
||||
ivMode.setOnClickListener( new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick( View v ) {
|
||||
if ( ivMode.isSelected() ) {
|
||||
mMApUIController.changeMapMode( EnumMapUI.CarUp_2D );
|
||||
} else {
|
||||
mMApUIController.changeMapMode( EnumMapUI.NorthUP_2D );
|
||||
}
|
||||
ivMode.setSelected( !ivMode.isSelected() );
|
||||
ivMode.setText( getString( ivMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) );
|
||||
mCameraMode = findViewById( R.id.module_ext_id_north );
|
||||
mCameraMode.setOnClickListener( view -> {
|
||||
if ( mCameraMode.isSelected() ) {
|
||||
mMApUIController.changeMapMode( EnumMapUI.CarUp_2D );
|
||||
} else {
|
||||
mMApUIController.changeMapMode( EnumMapUI.NorthUP_2D );
|
||||
}
|
||||
mCameraMode.setSelected( !mCameraMode.isSelected() );
|
||||
mCameraMode.setText( getString( mCameraMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) );
|
||||
} );
|
||||
|
||||
mSpeedLimit = findViewById( R.id.module_entrance_id_speed_limit_container );
|
||||
@@ -221,11 +214,11 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
|
||||
int opera_type = intent.getIntExtra( "EXTRA_OPERA", -1 );
|
||||
if ( key_type == 10027 ) {
|
||||
if ( opera_type == 0 ) {
|
||||
ivMode.setSelected( false );
|
||||
mCameraMode.setSelected( false );
|
||||
} else if ( opera_type == 1 ) {
|
||||
ivMode.setSelected( true );
|
||||
mCameraMode.setSelected( true );
|
||||
}
|
||||
ivMode.setText( getString( ivMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) );
|
||||
mCameraMode.setText( getString( mCameraMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) );
|
||||
}
|
||||
}
|
||||
} );
|
||||
@@ -312,9 +305,9 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
|
||||
public void onStartNavi() {
|
||||
mCommonAddress.setVisibility( View.GONE );
|
||||
mNaviInfo.setVisibility( View.VISIBLE );
|
||||
ivMode.setVisibility( View.VISIBLE );
|
||||
mCameraMode.setVisibility( View.VISIBLE );
|
||||
mExitNavi.setVisibility( View.VISIBLE );
|
||||
mMApUIController.changeMapMode( ivMode.isSelected() ? EnumMapUI.NorthUP_2D : EnumMapUI.CarUp_2D );
|
||||
mMApUIController.changeMapMode( mCameraMode.isSelected() ? EnumMapUI.NorthUP_2D : EnumMapUI.CarUp_2D );
|
||||
MapCenterPointStrategy.setMapCenterPointBySceneAndDelay( mMApUIController, Scene.NAVI, 500, () -> {
|
||||
return !mMogoNavi.isNaviing();
|
||||
} );
|
||||
@@ -324,7 +317,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
|
||||
public void onStopNavi() {
|
||||
mCommonAddress.setVisibility( View.VISIBLE );
|
||||
mNaviInfo.setVisibility( View.GONE );
|
||||
ivMode.setVisibility( View.GONE );
|
||||
mCameraMode.setVisibility( View.GONE );
|
||||
mExitNavi.setVisibility( View.GONE );
|
||||
mSpeedLimit.setVisibility( View.GONE );
|
||||
mMApUIController.changeMapMode( EnumMapUI.NorthUP_2D );
|
||||
|
||||
@@ -34,8 +34,8 @@ import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back
|
||||
* 2020-01-09.
|
||||
*/
|
||||
class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallBack {
|
||||
override fun onCmdSelected(cmd: String?) {
|
||||
|
||||
override fun onCmdSelected(cmd: String?) {
|
||||
when (cmd) {
|
||||
"firstPath" -> {
|
||||
selectItem(0)
|
||||
@@ -105,7 +105,13 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
|
||||
if (calculatedStrategies != null && calculatedStrategies.size > 0) {
|
||||
mAdapter.setDatas(calculatedStrategies)
|
||||
mAdapter.selectTag = calculatedStrategies[0].tagId
|
||||
UiThreadHandler.postDelayed( {
|
||||
UiThreadHandler.postDelayed({
|
||||
if (isRemoving || isDetached) {
|
||||
return@postDelayed
|
||||
}
|
||||
if (calculatedStrategies.isNullOrEmpty()) {
|
||||
return@postDelayed
|
||||
}
|
||||
SearchServiceHolder.getNavi().itemClickInteraction.onItemClicked(calculatedStrategies[0].tagId)
|
||||
}, 500L)
|
||||
}
|
||||
@@ -163,19 +169,16 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
|
||||
|
||||
et_navi_search.setText(getString(R.string.choose_path))
|
||||
et_navi_search.isEnabled = false
|
||||
SearchServiceHolder.getNavi()
|
||||
.naviTo(mogoTip)
|
||||
SearchServiceHolder.getNavi().naviTo(mogoTip)
|
||||
|
||||
SearchServiceHolder.listenerCenter.registerMogoNaviListener(AMapConstants.PATH_FRAGMENT_CHOOSE_PATH, this)
|
||||
|
||||
var arrayList = ArrayList<MogoCalculatePath>()
|
||||
mAdapter = CalculatePathAdapter(activity, arrayList)
|
||||
rv_search_result.layoutManager =
|
||||
LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
|
||||
rv_search_result.layoutManager = LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
|
||||
|
||||
rv_search_result.adapter = mAdapter
|
||||
tv_navi_navi.setOnClickListener {
|
||||
|
||||
if (group_path.visibility == View.VISIBLE) {
|
||||
retry()
|
||||
} else {
|
||||
@@ -184,7 +187,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
|
||||
}
|
||||
|
||||
SearchServiceHolder.getNavi().setLineClickInteraction {
|
||||
mAdapter.selectTag = it
|
||||
mAdapter.selectTag = it
|
||||
}
|
||||
|
||||
mAdapter.setOnClickListener {
|
||||
|
||||
Reference in New Issue
Block a user