opt
This commit is contained in:
@@ -640,6 +640,11 @@ public class AMapNaviViewWrapper implements IMogoMapView,
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCalculateSuccess() {
|
||||
loseLockMode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCameraChange( CameraPosition cameraPosition ) {
|
||||
}
|
||||
|
||||
@@ -22,5 +22,9 @@ public class AMapMessageConsts {
|
||||
* 取消导航
|
||||
*/
|
||||
public static final int MSG_NAVI_STOP = 1001;
|
||||
/**
|
||||
* 规划路线成功
|
||||
*/
|
||||
public static final int MSG_CALCULATE_SUCCESS = 1002;
|
||||
|
||||
}
|
||||
|
||||
@@ -15,4 +15,6 @@ public interface AMapMessageListener {
|
||||
void onNaviStopped();
|
||||
|
||||
void onNaviInfoUpdat( NaviInfo naviInfo );
|
||||
|
||||
void onCalculateSuccess();
|
||||
}
|
||||
|
||||
@@ -84,6 +84,10 @@ public class AMapMessageManager {
|
||||
sendMessage( AMapMessageConsts.MSG_NAVI_STOP );
|
||||
}
|
||||
|
||||
public void postCalculateSuccess() {
|
||||
sendMessage( AMapMessageConsts.MSG_CALCULATE_SUCCESS );
|
||||
}
|
||||
|
||||
private synchronized void handleMessage( Message msg ) {
|
||||
if ( msg == null ) {
|
||||
return;
|
||||
@@ -95,6 +99,9 @@ public class AMapMessageManager {
|
||||
case AMapMessageConsts.MSG_NAVI_STOP:
|
||||
handleNaviStoppedMsg();
|
||||
break;
|
||||
case AMapMessageConsts.MSG_CALCULATE_SUCCESS:
|
||||
handleCalculateSuccessMsg();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,4 +122,13 @@ public class AMapMessageManager {
|
||||
listener.onNaviStopped();
|
||||
}
|
||||
}
|
||||
|
||||
private void handleCalculateSuccessMsg() {
|
||||
if ( mListeners == null ) {
|
||||
return;
|
||||
}
|
||||
for ( AMapMessageListener listener : mListeners ) {
|
||||
listener.onCalculateSuccess();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import com.mogo.map.navi.MogoNaviListenerHandler;
|
||||
import com.mogo.map.navi.MogoTraffic;
|
||||
import com.mogo.map.navi.OnCalculatePathItemClickInteraction;
|
||||
import com.mogo.utils.UiThreadHandler;
|
||||
import com.mogo.utils.WorkThreadHandler;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
|
||||
import java.util.List;
|
||||
@@ -222,8 +223,14 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
|
||||
super.onCalculateRouteSuccess( aMapCalcRouteResult );
|
||||
Logger.i( TAG, "导航规划成功" );
|
||||
setStopped( false );
|
||||
mNaviOverlayHelper.showCalculatedPaths();
|
||||
MogoNaviListenerHandler.getInstance().onCalculateSuccess();
|
||||
WorkThreadHandler.getInstance().post( ()->{
|
||||
mNaviOverlayHelper.showCalculatedPaths(()->{
|
||||
UiThreadHandler.post( ()->{
|
||||
MogoNaviListenerHandler.getInstance().onCalculateSuccess();
|
||||
AMapMessageManager.getInstance().postCalculateSuccess();
|
||||
} );
|
||||
});
|
||||
} );
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -247,6 +254,7 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
|
||||
if ( mNaviOverlayHelper != null ) {
|
||||
mNaviOverlayHelper.handleClickedPolyline( polyline, isNaviing() );
|
||||
mAMapNavi.selectRouteId( mNaviOverlayHelper.getSelectedPathId() );
|
||||
mNaviOverlayHelper.showBounds();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -86,18 +86,22 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
|
||||
/**
|
||||
* 显示规划的路径
|
||||
*/
|
||||
public void showCalculatedPaths() {
|
||||
public void showCalculatedPaths( Runnable after ) {
|
||||
clearCalculatedOverlay();
|
||||
mCalculatePathItems = getSortedPaths();
|
||||
if ( mCalculatePathItems == null || mCalculatePathItems.isEmpty() ) {
|
||||
return;
|
||||
}
|
||||
addEndPoints();
|
||||
showPathsBound( getBounds() );
|
||||
renderPathOverlay( mCalculatePathItems );
|
||||
showPathsBound( getBounds(), () -> {
|
||||
addEndPoints();
|
||||
renderPathOverlay( mCalculatePathItems );
|
||||
if ( after != null ) {
|
||||
after.run();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
private LatLngBounds getBounds(){
|
||||
private LatLngBounds getBounds() {
|
||||
if ( mCalculatePathItems == null ) {
|
||||
return null;
|
||||
}
|
||||
@@ -164,17 +168,39 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
|
||||
}
|
||||
}
|
||||
|
||||
public void showBounds() {
|
||||
showPathsBound( getBounds(), null );
|
||||
}
|
||||
|
||||
/**
|
||||
* 将规划好的路径显示在视野内
|
||||
*/
|
||||
private void showPathsBound( LatLngBounds bounds ) {
|
||||
private void showPathsBound( LatLngBounds bounds, Runnable after ) {
|
||||
if ( bounds == null ) {
|
||||
return;
|
||||
}
|
||||
checkAMapInstance();
|
||||
mAMap.animateCamera(
|
||||
CameraUpdateFactory.newLatLngBoundsRect( bounds, mBoundRect.left, mBoundRect.right,
|
||||
mBoundRect.top, mBoundRect.bottom ) );
|
||||
mAMap.animateCamera( CameraUpdateFactory.newLatLngBoundsRect(
|
||||
bounds,
|
||||
mBoundRect.left,
|
||||
mBoundRect.right,
|
||||
mBoundRect.top,
|
||||
mBoundRect.bottom ),
|
||||
new AMap.CancelableCallback() {
|
||||
@Override
|
||||
public void onFinish() {
|
||||
if ( after != null ) {
|
||||
after.run();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel() {
|
||||
if ( after != null ) {
|
||||
after.run();
|
||||
}
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
private void checkAMapInstance() {
|
||||
@@ -414,6 +440,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
|
||||
public void onItemClicked( String tagId ) {
|
||||
handleClickedPolyline( tagId );
|
||||
mAMapNavi.selectRouteId( getSelectedPathId() );
|
||||
showBounds();
|
||||
}
|
||||
|
||||
public OnCalculatePathItemClickInteraction getItemClickInteraction() {
|
||||
|
||||
Reference in New Issue
Block a user