[3.4.0][视角] 优化旋转动效

This commit is contained in:
renwj
2023-07-13 19:58:29 +08:00
parent 7a098ab2c9
commit f3e9de10d0
7 changed files with 42 additions and 20 deletions

View File

@@ -160,7 +160,7 @@ public class V2XRoadEventScenario extends AbsV2XScenario<V2XRoadEventEntity> imp
if (isNeedChangeAngle()) {
MarkerLocation location = content.getLocation();
if (location != null) {
CallerVisualAngleManager.INSTANCE.changeAngle(new RoadEvent(content.getLocation().getLon(), content.getLocation().getLat(), content.getLocation().getAngle()));
CallerVisualAngleManager.INSTANCE.changeAngle(new RoadEvent(content.getLocation().getLon(), content.getLocation().getLat(), content.getLocation().getAngle(), false));
}
}
if (entity.isNeedAddLine() && !EventTypeEnumNew.TYPE_SOCKET_ROAD_CONGESTION.getPoiType().equals(content.getPoiType())) {

View File

@@ -7,21 +7,14 @@ import androidx.lifecycle.*
import androidx.lifecycle.Lifecycle.Event
import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.config.*
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.data.map.*
import com.mogo.eagle.core.function.api.map.angle.*
import com.mogo.eagle.core.function.api.map.angle.Scene
import com.mogo.eagle.core.function.call.autopilot.*
import com.mogo.eagle.core.function.call.map.*
import com.mogo.eagle.core.utilcode.kotlin.*
import com.mogo.eagle.core.utilcode.mogo.*
import com.mogo.eagle.core.utilcode.mogo.logger.*
import com.zhidaoauto.map.sdk.open.tools.*
import kotlinx.coroutines.*
import kotlinx.coroutines.android.*
import java.util.*
import java.util.concurrent.atomic.*
@Route(path = MogoServicePaths.PATH_VISUAL_ANGLE)
class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider {
@@ -193,31 +186,26 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider {
}
}
@OptIn(InternalCoroutinesApi::class)
private fun doChangeAngle(record: Record) {
val angle = record.target.angle
CallerMapUIServiceManager.getMapUIController()?.also {
Log.d(TAG, "--- doChangeAngle --- ${record.target}")
if (record.target !is Default) {
record.isDisplay = true
kotlinx.coroutines.internal.synchronized(queue) {
synchronized(queue) {
queue += record
}
}
if (record.target is Default && roadEventFlag) {
roadEventFlag = false
//it.setLockMode(true)
it.setLockMode(true)
}
if (record.target is RoadEvent) {
it.setLockMode(false)
roadEventFlag = true
Log.d("TTTTTT", "scene:${record.target}")
// scope.launch {
// delay(500)
// it.changeMapVisualAngle(angle, null)
// }
it.animateTo(record.target.poi_lon, record.target.poi_lat, record.target.poi_angle.toFloat(), 1000, true)
// it.animateTo(record.target.poi_lon, record.target.poi_lat, 0f, 1000, true)
scope.launch {
it.animateTo(0.0 ,0.0,1f, 0f ,11.5f,28f,3000,true)
}
} else {
it.changeMapVisualAngle(angle, null)

View File

@@ -37,14 +37,14 @@ class Default(val delay: Long = 2, val unit: TimeUnit = SECONDS): Scene() {
/**
* 道路事件
*/
class RoadEvent(val poi_lon: Double, val poi_lat: Double, val poi_angle: Double): Scene() {
class RoadEvent(val poi_lon: Double, val poi_lat: Double, val poi_angle: Double, val isGps: Boolean = true): Scene() {
override val angle: VisualAngleMode = VisualAngleMode.MODE_LONG_SIGHT
override val priority: Int = 5
override val displayThreshold: Long
get() = SECONDS.toMillis(5)
get() = SECONDS.toMillis(8)
override fun toString(): String {
return "RoadEvent(priority=${priority}, displayThreshold: ${displayThreshold}, priority=${priority}, lon: $poi_lon, lat: $poi_lat, angle: $poi_angle)"

View File

@@ -389,4 +389,17 @@ public interface IMogoMapUIController {
* @param isGps 是否是高精坐标
*/
void animateTo(double lon, double lat, float rotateAngle, int duration, boolean isGps);
/**
* 自动切换视角到指定点包含过渡动画并持续指定duration毫秒
*
* @param lon 经度
* @param lat 纬度
* @param v1 旋转角度
* @param v2 持续时间
* @param v3
* @param v4
*/
void animateTo(double lon, double lat, float v1, float v2, float v3, float v4, int duration, boolean isGps);
}

View File

@@ -1161,4 +1161,11 @@ public class AMapViewWrapper implements IMogoMapView,
mMapView.getMapAutoViewHelper().animateTo(lon, lat, rotateAngle, duration, isGps);
}
}
@Override
public void animateTo(double lon, double lat, float v1, float v2, float v3, float v4, int duration, boolean isGps) {
if (mMapView.getMapAutoViewHelper() != null) {
mMapView.getMapAutoViewHelper().animateTo(lon, lat, v1, v2, v3, v4, duration, isGps);
}
}
}

View File

@@ -512,4 +512,11 @@ public class MogoMapUIController implements IMogoMapUIController {
mDelegate.animateTo(lon, lat, rotateAngle, duration, isGps);
}
}
@Override
public void animateTo(double lon, double lat, float v1, float v2, float v3, float v4, int duration, boolean isGps) {
if (mDelegate != null) {
mDelegate.animateTo(lon, lat, v1, v2, v3, v4, duration, isGps);
}
}
}

View File

@@ -449,4 +449,11 @@ public class AMapUIController implements IMogoMapUIController {
mClient.animateTo(lon, lat, rotateAngle, duration, isGps);
}
}
@Override
public void animateTo(double lon, double lat, float v1, float v2, float v3, float v4, int duration, boolean isGps) {
if (mClient != null) {
mClient.animateTo(lon, lat, v1, v2, v3, v4, duration, isGps);
}
}
}