This commit is contained in:
zhongchao
2021-03-10 17:34:45 +08:00
3 changed files with 88 additions and 55 deletions

View File

@@ -26,6 +26,7 @@ class MapStyleController {
private MapStyleController() {
mVrAreaFilters.add( new ShunYiArea() );
mVrAreaFilters.add( new OCHArea() );
mVrAreaFilters.add( new HuiXinXiJieArea() );
}
public static MapStyleController getInstance() {
@@ -160,4 +161,27 @@ class MapStyleController {
return 0;
}
}
public static class HuiXinXiJieArea implements VrAreaFilter {
@Override
public double getLeftBottomLat() {
return 39.96741320378243;
}
@Override
public double getLeftBottomLon() {
return 116.41045709250723;
}
@Override
public double getRightTopLat() {
return 39.98232698552779;
}
@Override
public double getRightTopLon() {
return 116.41879656379113;
}
}
}

View File

@@ -240,60 +240,63 @@ public class SimpleHandlerThreadPool {
final IMogoMarker finalMarker = marker;
Logger.d( TAG, "work in " + Thread.currentThread().getName() );
if ( lastPosition != null ) {
MogoLatLng endLatLon = new MogoLatLng( cloudRoadData.getWgslat(),cloudRoadData.getWgslon() );
long interval = SnapshotSetDataDrawer.getInstance().computeAnimDuration( lastPosition.getSystemTime(), cloudRoadData.getSystemTime(), lastPosition.getSatelliteTime(), cloudRoadData.getSatelliteTime() );
// if ( lastPosition != null ) {
// MogoLatLng endLatLon = new MogoLatLng( cloudRoadData.getWgslat(),cloudRoadData.getWgslon() );
// long interval = SnapshotSetDataDrawer.getInstance().computeAnimDuration( lastPosition.getSystemTime(), cloudRoadData.getSystemTime(), lastPosition.getSatelliteTime(), cloudRoadData.getSatelliteTime() );
//
// long cost = System.currentTimeMillis() - start;
// interval -= cost;
// MogoLatLng lastPoint = new MogoLatLng( lastPosition.getWgslat(), lastPosition.getWgslon() );
// BaseDrawer.MovingPoint endPoint = new BaseDrawer.MovingPoint();
// endPoint.point = endLatLon;
// endPoint.marker = marker;
// endPoint.delay = interval;
// endPoint.angle = ( float ) cloudRoadData.getHeading();
//
// BaseDrawer.MovingPoint startPoint = new BaseDrawer.MovingPoint();
// startPoint.point = lastPoint;
// startPoint.marker = marker;
// startPoint.delay = 0;
// startPoint.angle = ( float ) lastPosition.getHeading();
// List< BaseDrawer.MovingPoint > points = BaseDrawer.interpolate( startPoint, endPoint, interval );
// Message msg = new Message();
// BaseDrawer.MovingPoints obj = new BaseDrawer.MovingPoints();
// obj.points = points;
// startSettingPointLooper(obj);
//// msg.obj = obj;
//// msg.what = MSG_POINTS_SETTING;
//// renderHandler.sendMessage( msg );
//// marker.startSmoothInMs( points, interval );
//// marker.addDynamicAnchorPosition( endLatLon, interval );
// Logger.d( TAG, "anim duration: %s, points size = %s", interval, points.size() );
// } else {
// marker.setRotateAngle( ( ( float ) cloudRoadData.getHeading() ) );
// marker.setPosition(cloudRoadData.getWgslat(), cloudRoadData.getWgslon());
// }
// SnapshotSetDataDrawer.getInstance().showSelfSpeed( AbsMogoApplication.getApp(),
// marker,
// cloudRoadData.getSpeed(),
// MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()
// );
long interval = 0;
if(lastPosition!=null&& !lastPosition.equals( cloudRoadData )) {
long cost = System.currentTimeMillis() - start;
interval -= cost;
MogoLatLng lastPoint = new MogoLatLng( lastPosition.getWgslat(), lastPosition.getWgslon() );
BaseDrawer.MovingPoint endPoint = new BaseDrawer.MovingPoint();
endPoint.point = endLatLon;
endPoint.marker = marker;
endPoint.delay = interval;
endPoint.angle = ( float ) cloudRoadData.getHeading();
BaseDrawer.MovingPoint startPoint = new BaseDrawer.MovingPoint();
startPoint.point = lastPoint;
startPoint.marker = marker;
startPoint.delay = 0;
startPoint.angle = ( float ) lastPosition.getHeading();
List< BaseDrawer.MovingPoint > points = BaseDrawer.interpolate( startPoint, endPoint, interval );
Message msg = new Message();
BaseDrawer.MovingPoints obj = new BaseDrawer.MovingPoints();
obj.points = points;
startSettingPointLooper(obj);
// msg.obj = obj;
// msg.what = MSG_POINTS_SETTING;
// renderHandler.sendMessage( msg );
// marker.startSmoothInMs( points, interval );
// marker.addDynamicAnchorPosition( endLatLon, interval );
Logger.d( TAG, "anim duration: %s, points size = %s", interval, points.size() );
} else {
marker.setRotateAngle( ( ( float ) cloudRoadData.getHeading() ) );
marker.setPosition(cloudRoadData.getWgslat(), cloudRoadData.getWgslon());
interval = cloudRoadData.getSystemTime() - lastPosition.getSystemTime() - cost;
}
SnapshotSetDataDrawer.getInstance().showSelfSpeed( AbsMogoApplication.getApp(),
marker,
cloudRoadData.getSpeed(),
MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()
);
// renderHandler.post( () -> {
// // 由于地图现在不支持addDynamicAnchorPosition并发所以工作线程仅做相关计算真正绘制发送到另外一条绘制线程中做
// if ( lastPosition != null && !lastPosition.equals( cloudRoadData ) ) {
// long interval = SystemClock.uptimeMillis() - lastExecutionTimeCache.get( uniqueKey );
// interval = cloudRoadData.getSystemTime() - lastPosition.getSystemTime();
// finalMarker.addDynamicAnchorPosition( new MogoLatLng( cloudRoadData.getWgslat(), cloudRoadData.getWgslon() ), interval );
// Logger.d( TAG, "anim duration: %s in thread: %s", interval, Thread.currentThread().getName() );
// } else {
// finalMarker.setRotateAngle( ( float ) cloudRoadData.getHeading() );
// finalMarker.setPosition( cloudRoadData.getWgslat(), cloudRoadData.getWgslon() );
// Logger.d( TAG, "设置点位置 in thread: %s", Thread.currentThread().getName() );
// }
// lastExecutionTimeCache.put( uniqueKey, SystemClock.uptimeMillis() );
// SnapshotSetDataDrawer.getInstance().showSelfSpeed( AbsMogoApplication.getApp(), finalMarker, cloudRoadData.getSpeed(), MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() );
// } );
final long finalInterval =interval;
renderHandler.post( () -> {
// 由于地图现在不支持addDynamicAnchorPosition并发所以工作线程仅做相关计算真正绘制发送到另外一条绘制线程中做
if ( lastPosition != null && !lastPosition.equals( cloudRoadData ) ) {
finalMarker.addDynamicAnchorPosition( new MogoLatLng( cloudRoadData.getWgslat(), cloudRoadData.getWgslon() ), finalInterval );
Logger.d( TAG, "anim duration: %s in thread: %s", finalInterval, Thread.currentThread().getName() );
} else {
finalMarker.setRotateAngle( ( float ) cloudRoadData.getHeading() );
finalMarker.setPosition( cloudRoadData.getWgslat(), cloudRoadData.getWgslon() );
Logger.d( TAG, "设置点位置 in thread: %s", Thread.currentThread().getName() );
}
lastExecutionTimeCache.put( uniqueKey, SystemClock.uptimeMillis() );
SnapshotSetDataDrawer.getInstance().showSelfSpeed( AbsMogoApplication.getApp(), finalMarker, cloudRoadData.getSpeed(), MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() );
} );
}
@@ -307,4 +310,8 @@ public class SimpleHandlerThreadPool {
SnapshotSetDataDrawer.getInstance().sendMessage( MSG_REMOVE_DIRTY_MARKERS, result );
}
}
public void postRender(Runnable runnable) {
renderHandler.post(runnable);
}
}

View File

@@ -559,10 +559,10 @@ public class MockIntentHandler implements IntentHandler {
SnapshotSetDataDrawer.getInstance().renderSnapshotData( GsonUtil.objectFromJson( json, MogoSnapshotSetData.class ) );
break;
case 47:
mLocationMockHandler.sendEmptyMessageDelayed( 1, 8200L );
mLocationMockHandler.sendEmptyMessageDelayed( 2, 0 );
mLocationMockHandler.sendEmptyMessageDelayed( 1, 200L );
// mLocationMockHandler.sendEmptyMessageDelayed( 2, 0 );
// mLocationMockHandler.sendEmptyMessageDelayed( 21, 200 );
// mLocationMockHandler.sendEmptyMessageDelayed( 3, 0L );
mLocationMockHandler.sendEmptyMessageDelayed( 3, 0L );
// mLocationMockHandler.sendEmptyMessageDelayed( 5, 0L );
break;
case 48:
@@ -694,6 +694,8 @@ public class MockIntentHandler implements IntentHandler {
throw new Exception( "end of file." );
}
JSONObject jo = new JSONObject( line );
jo.put( "satelliteTime", System.currentTimeMillis() );
jo.put( "systemTime", System.currentTimeMillis() );
MarkerServiceHandler.getApis().getMapServiceApi().getMapUIController().syncLocation2Map( jo );
SnapshotLocationController.getInstance().syncAdasLocationInfo( jo );
Log.i( "mock-timer-loc", "cost " + ( System.currentTimeMillis() - start ) + "ms" );