This commit is contained in:
wangcongtao
2020-01-15 22:48:50 +08:00
parent 6ddf294e7d
commit 24aeb160ba
7 changed files with 223 additions and 27 deletions

View File

@@ -129,6 +129,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
options.setNaviArrowVisible( false );
// 通过路线是否自动置灰,仅支持驾车导航
options.setAfterRouteAutoGray( true );
options.setZoom( 16 );
options.setPointToCenter( 0.5D, 0.5D );
// 2D模式
options.setTilt( 0 );
@@ -456,6 +457,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
public void onNaviStarted() {
if ( checkAMapView() ) {
mMapView.setCarOverlayVisible( true );
showMyLocation( false );
}
}
@@ -463,6 +465,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
public void onNaviStopped() {
if ( checkAMapView() ) {
mMapView.setCarOverlayVisible( false );
showMyLocation( true );
}
}

View File

@@ -15,6 +15,7 @@ import com.amap.api.navi.model.AimLessModeCongestionInfo;
import com.amap.api.navi.model.AimLessModeStat;
import com.amap.api.navi.model.NaviInfo;
import com.autonavi.tbt.TrafficFacilityInfo;
import com.mogo.utils.logger.Logger;
/**
* @author congtaowang
@@ -24,6 +25,8 @@ import com.autonavi.tbt.TrafficFacilityInfo;
*/
public abstract class AMapNaviListenerAdapter implements AMapNaviListener {
private static final String TAG = "AMapNaviListenerAdapter";
@Override
public void onInitNaviFailure() {
@@ -106,7 +109,13 @@ public abstract class AMapNaviListenerAdapter implements AMapNaviListener {
@Override
public void updateCameraInfo( AMapNaviCameraInfo[] aMapNaviCameraInfos ) {
if ( aMapNaviCameraInfos != null ) {
for ( AMapNaviCameraInfo aMapNaviCameraInfo : aMapNaviCameraInfos ) {
if ( aMapNaviCameraInfo != null ) {
Logger.i( TAG, "current camera speed: %d", aMapNaviCameraInfo.getCameraSpeed() );
}
}
}
}
@Override

View File

@@ -148,10 +148,10 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
if ( mNaviOverlayHelper != null ) {
mNaviOverlayHelper.handleClickedPolyline( polyline, isNaviing() );
mAMapNavi.selectRouteId( mNaviOverlayHelper.getSelectedPathId() );
if ( isNaviing() ) {
mAMapNavi.stopNavi();
mAMapNavi.startNavi( mClient.isRealNavi() ? NaviType.GPS : NaviType.EMULATOR );
}
// if ( isNaviing() ) {
// mAMapNavi.stopNavi();
// mAMapNavi.startNavi( mClient.isRealNavi() ? NaviType.GPS : NaviType.EMULATOR );
// }
}
}

View File

@@ -636,6 +636,7 @@ public class ObjectUtils {
mogoNaviInfo.setNextRoadName( naviInfo.getNextRoadName() );
mogoNaviInfo.setPathRetainDistance( naviInfo.getPathRetainDistance() );
mogoNaviInfo.setPathRetainTime( naviInfo.getPathRetainTime() );
mogoNaviInfo.setCurrentSpeed( naviInfo.getLimitSpeed() );
return mogoNaviInfo;
}
}

View File

@@ -54,6 +54,11 @@ public class MogoNaviInfo implements Parcelable {
*/
private int pathRetainDistance;
/**
* 当前限速
*/
private float currentLimitSpeed;
public String getCurrentRoadName() {
return currentRoadName;
}
@@ -118,6 +123,14 @@ public class MogoNaviInfo implements Parcelable {
this.pathRetainDistance = pathRetainDistance;
}
public float getCurrentLimitSpeed() {
return currentLimitSpeed;
}
public void setCurrentLimitSpeed( float currentLimitSpeed ) {
this.currentLimitSpeed = currentLimitSpeed;
}
@Override
public int describeContents() {
return 0;
@@ -133,6 +146,7 @@ public class MogoNaviInfo implements Parcelable {
dest.writeString( this.nextRoadName );
dest.writeInt( this.pathRetainTime );
dest.writeInt( this.pathRetainDistance );
dest.writeFloat( this.currentLimitSpeed );
}
public MogoNaviInfo() {
@@ -147,9 +161,10 @@ public class MogoNaviInfo implements Parcelable {
this.nextRoadName = in.readString();
this.pathRetainTime = in.readInt();
this.pathRetainDistance = in.readInt();
this.currentLimitSpeed = in.readFloat();
}
public static final Parcelable.Creator< MogoNaviInfo > CREATOR = new Parcelable.Creator< MogoNaviInfo >() {
public static final Creator< MogoNaviInfo > CREATOR = new Creator< MogoNaviInfo >() {
@Override
public MogoNaviInfo createFromParcel( Parcel source ) {
return new MogoNaviInfo( source );

View File

@@ -212,96 +212,216 @@ public class MogoModulesManager implements MogoModulesHandler,
mMapLoadedCallback = null;
}
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onMapLoaded();
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onMapLoaded();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onTouch( MotionEvent motionEvent ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onTouch( motionEvent );
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onTouch( motionEvent );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onPOIClick( MogoPoi poi ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onPOIClick( poi );
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onPOIClick( poi );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onMapClick( MogoLatLng latLng ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onMapClick( latLng );
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onMapClick( latLng );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onLockMap( boolean isLock ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onLockMap( isLock );
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onLockMap( isLock );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onMapModeChanged( EnumMapUI ui ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onMapModeChanged( ui );
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onMapModeChanged( ui );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onMapChanged( MogoLatLng location, float zoom, float tilt, float bearing ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onMapChanged( location, zoom, tilt, bearing );
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onMapChanged( location, zoom, tilt, bearing );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onInitNaviFailure() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onInitNaviFailure();
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onInitNaviFailure();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onInitNaviSuccess() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onInitNaviSuccess();
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onInitNaviSuccess();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onNaviInfoUpdate( naviinfo );
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onNaviInfoUpdate( naviinfo );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onStartNavi() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onStartNavi();
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onStartNavi();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onStopNavi() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onStopNavi();
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onStopNavi();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@@ -309,24 +429,54 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onCalculateSuccess() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onCalculateSuccess();
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onCalculateSuccess();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onoCalculateFailed() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onoCalculateFailed();
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onoCalculateFailed();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@Override
public void onLocationChanged( MogoLocation location ) {
Iterator< IMogoLocationListener > iterator = MogoRegisterCenterHandler.getInstance().getLocationListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
iterator.next().onLocationChanged( location );
IMogoLocationListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onLocationChanged( location );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
}
@@ -375,7 +525,11 @@ public class MogoModulesManager implements MogoModulesHandler,
public void onMarkerReceive( IMogoMarker marker ) {
IMogoMarkerClickListener listener = MogoRegisterCenterHandler.getInstance().getMarkerListener( marker.getOwner() );
if ( listener != null ) {
listener.onMarkerClicked( marker );
try {
listener.onMarkerClicked( marker );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}

View File

@@ -297,7 +297,11 @@ public class MogoServiceProvider implements IMogoModuleProvider,
* @return
*/
private float getMapCameraFactWidth() {
return Utils.calculateLineDistance( mCameraNorthEastPosition, new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) );
try {
return Utils.calculateLineDistance( mCameraNorthEastPosition, new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) );
} catch ( Exception e ) {
return 1000f;
}
}
/**
@@ -306,7 +310,11 @@ public class MogoServiceProvider implements IMogoModuleProvider,
* @return
*/
private float getMapCameraFactHeight() {
return Utils.calculateLineDistance( mCameraSouthWestPosition, new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) );
try {
return Utils.calculateLineDistance( mCameraSouthWestPosition, new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) );
} catch ( Exception e ) {
return 1000f;
}
}
/**
@@ -385,14 +393,15 @@ public class MogoServiceProvider implements IMogoModuleProvider,
notifyRefreshData( latLng, getQueryRadius(), mCustomRefreshCallback );
mLastCustomRefreshCenterLocation = latLng;
mLastZoomLevel = zoom;
} else if ( mLastZoomLevel - zoom < 0 ) {
mLastZoomLevel = zoom;
} else if ( mLastZoomLevel == zoom ) {
// 手动平移
if ( invokeRefreshWhenTranslationByUser( latLng ) ) {
notifyRefreshData( latLng, getQueryRadius(), mCustomRefreshCallback );
mLastCustomRefreshCenterLocation = latLng;
}
} else {
mLastZoomLevel = zoom;
}
}
@@ -452,6 +461,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
return;
}
Logger.d( TAG, mAutoRefreshCallback == callback ? "触发自动刷新" : "触发手动刷新" );
Logger.i( TAG, "刷新半径 = %d, 点 = %s", radius, latLng );
mRefreshModel.refreshData( latLng, radius, callback );
}
@@ -467,7 +477,11 @@ public class MogoServiceProvider implements IMogoModuleProvider,
@Override
public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) {
// 发送当前限速到 adas
Intent intent = new Intent( "com.mogo.launcher.adas" );
intent.putExtra( "adas_speed_limit", naviinfo.getCurrentLimitSpeed() );
Logger.i( TAG, "send limit data to adas: limitspeed = %f", naviinfo.getCurrentLimitSpeed() );
mContext.sendBroadcast( intent );
}
@Override