增加接口
/**
     * 获取车道中心线信息
     */
    fun getCenterLineInfo(lon: Double, lat: Double, angle: Float): CenterLine?

Signed-off-by: donghongyu <donghongyu@zhidaoauto.com>
This commit is contained in:
donghongyu
2022-03-28 18:47:55 +08:00
parent c82c3234ba
commit 4849ec413f
18 changed files with 277 additions and 656 deletions

View File

@@ -65,7 +65,7 @@ class SpeedPanelView @JvmOverloads constructor(
override fun run() {
if (mLatLng != null) {
mSpeedLimmit = MogoMapUIController.getInstance()
.getSpeedLimmit(mLatLng!!.longitude, mLatLng!!.latitude, mLatLng!!.bearing)
.getLimitSpeed(mLatLng!!.longitude, mLatLng!!.latitude, mLatLng!!.bearing)
UiThreadHandler.post {
val speed = (mLatLng!!.speed * 3.6f).toInt()
mSpeedChartView.setArcColor(Color.parseColor(if (speed > mSpeedLimmit) "#DB3137" else "#3E77F6"))

View File

@@ -10,6 +10,7 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.eagle.core.data.map.CenterLine;
import com.mogo.eagle.core.function.api.map.IMogoMapFrameController;
import com.mogo.eagle.core.function.api.map.hd.IMoGoMapFragmentProvider;
import com.mogo.eagle.core.function.call.base.CallerBase;
@@ -18,8 +19,6 @@ import com.mogo.map.IMogoUiSettings;
import com.mogo.map.MogoMapView;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.service.IMogoServiceApis;
/**
* @author donghongyu
@@ -29,7 +28,7 @@ import com.mogo.service.IMogoServiceApis;
* 地图图层,地图操作都在这个图层完成
*/
@Route(path = MoGoFragmentPaths.PATH_FRAGMENT_MAP)
public class MapFragment extends MvpFragment< MapView, MapPresenter >
public class MapFragment extends MvpFragment<MapView, MapPresenter>
implements MapView, IMogoMapFrameController, IMoGoMapFragmentProvider {
private static final String TAG = "MapFragment";
@@ -55,7 +54,7 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter >
}
@Override
public void initDelegate( IMogoMapFrameController controller ) {
public void initDelegate(IMogoMapFrameController controller) {
// do not implement
}
@@ -67,55 +66,55 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter >
@Override
public void changeToVRMode() {
try {
mMogoMapView.getMap().getUIController().changeMapMode( EnumMapUI.Type_VR);
} catch ( Exception e ) {
mMogoMapView.getMap().getUIController().changeMapMode(EnumMapUI.Type_VR);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void init( Context context ) {
public void init(Context context) {
// do not implement
}
@Override
protected void initViews( Bundle savedInstanceState ) {
super.initViews( savedInstanceState );
mMogoMapView = findViewById( R.id.module_map_id_map );
mMogoMapView.onCreate( savedInstanceState );
protected void initViews(Bundle savedInstanceState) {
super.initViews(savedInstanceState);
mMogoMapView = findViewById(R.id.module_map_id_map);
mMogoMapView.onCreate(savedInstanceState);
mMogoMap = mMogoMapView.getMap();
if ( mMogoMap != null ) {
mMogoMap.getUIController().showMyLocation( true );
if (mMogoMap != null) {
mMogoMap.getUIController().showMyLocation(true);
}
}
@NonNull
@Override
protected MapPresenter createPresenter() {
return new MapPresenter( this );
return new MapPresenter(this);
}
@Override
public void onActivityCreated( @Nullable Bundle savedInstanceState ) {
super.onActivityCreated( savedInstanceState );
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initMapView();
}
@Override
public void onSaveInstanceState( @NonNull Bundle outState ) {
super.onSaveInstanceState( outState );
if ( mMogoMapView != null ) {
mMogoMapView.onSaveInstanceState( outState );
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
if (mMogoMapView != null) {
mMogoMapView.onSaveInstanceState(outState);
}
}
@Override
public void onPause() {
super.onPause();
if ( mIsControllerByOthersStatus ) {
if (mIsControllerByOthersStatus) {
return;
}
if ( mMogoMapView != null ) {
if (mMogoMapView != null) {
mMogoMapView.onPause();
}
}
@@ -123,10 +122,10 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter >
@Override
public void onResume() {
super.onResume();
if ( mIsControllerByOthersStatus ) {
if (mIsControllerByOthersStatus) {
return;
}
if ( mMogoMapView != null ) {
if (mMogoMapView != null) {
mMogoMapView.onResume();
}
}
@@ -134,38 +133,38 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter >
@Override
public void onLowMemory() {
super.onLowMemory();
if ( mMogoMapView != null ) {
if (mMogoMapView != null) {
mMogoMapView.onLowMemory();
}
}
private void initMapView() {
mMogoMap = mMogoMapView.getMap();
if ( mMogoMap == null ) {
if (mMogoMap == null) {
return;
}
IMogoUiSettings uiSettings = mMogoMap.getUiSettings();
if ( uiSettings != null ) {
if (uiSettings != null) {
//设置所有手势是否可用
uiSettings.setAllGesturesEnabled( true );
uiSettings.setAllGesturesEnabled(true);
//设置指南针是否可见。
uiSettings.setCompassEnabled( false );
uiSettings.setCompassEnabled(false);
//设置室内地图楼层切换控件是否可见。
uiSettings.setIndoorSwitchEnabled( true );
uiSettings.setIndoorSwitchEnabled(true);
//设置定位按钮是否可见。
uiSettings.setMyLocationButtonEnabled( false );
uiSettings.setMyLocationButtonEnabled(false);
//设置旋转手势是否可用。
uiSettings.setRotateGesturesEnabled( false );
uiSettings.setRotateGesturesEnabled(false);
//设置比例尺控件是否可见
uiSettings.setScaleControlsEnabled( true );
uiSettings.setScaleControlsEnabled(true);
//设置拖拽手势是否可用。
uiSettings.setScrollGesturesEnabled( true );
uiSettings.setScrollGesturesEnabled(true);
//设置倾斜手势是否可用。
uiSettings.setTiltGesturesEnabled( true );
uiSettings.setTiltGesturesEnabled(true);
//设置缩放按钮是否可见。
uiSettings.setZoomControlsEnabled( false );
uiSettings.setZoomControlsEnabled(false);
//设置双指缩放手势是否可用。
uiSettings.setZoomGesturesEnabled( true );
uiSettings.setZoomGesturesEnabled(true);
}
}
@@ -181,7 +180,7 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter >
@Override
public void onDestroyView() {
if ( mMogoMapView != null ) {
if (mMogoMapView != null) {
mMogoMapView.onDestroy();
mMogoMapView = null;
mMogoMap = null;
@@ -208,6 +207,7 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter >
/**
* sight mode
*
* @param mode
*/
public static final int SIGHT_MODE_NORMAL = 0;
@@ -218,13 +218,13 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter >
@Override
public void setMapDAngle(int mode) {
float angle = getSightModeAngle(mode);
float angle = getSightModeAngle(mode);
mMogoMapView.getMap().getUIController().setMapDAngle(angle);
}
private float getSightModeAngle(int mode) {
float angle = 0.0f;
switch (mode){
switch (mode) {
case SIGHT_MODE_NORMAL:
angle = 16.5f;
case SIGHT_MODE_TOP:
@@ -239,4 +239,9 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter >
return angle;
}
@Nullable
@Override
public CenterLine getCenterLineInfo(double lon, double lat, float angle) {
return mMogoMapView.getMap().getUIController().getCenterLineInfo(lon, lat, angle);
}
}

View File

@@ -12,6 +12,10 @@ import com.mogo.module.common.MogoApisHandler;
import java.util.Timer;
import java.util.TimerTask;
/**
* 限速
* @author mogoauto
*/
public class SpeedLimitDataManager implements IMogoCarLocationChangedListener2 {
private static SpeedLimitDataManager instance ;
@@ -35,7 +39,7 @@ public class SpeedLimitDataManager implements IMogoCarLocationChangedListener2 {
public void run() {
if (mLocation != null){
if (MogoMapUIController.getInstance() != null) {
int speedLimmit = MogoMapUIController.getInstance().getSpeedLimmit(mLocation.getLongitude(), mLocation.getLatitude(), mLocation.getBearing());
int speedLimmit = MogoMapUIController.getInstance().getLimitSpeed(mLocation.getLongitude(), mLocation.getLatitude(), mLocation.getBearing());
UiThreadHandler.post(new Runnable() {
@Override
public void run() {

View File

@@ -0,0 +1,19 @@
package com.mogo.eagle.core.data.map
/**
* 道路中心经纬度集合
*/
class CenterLine {
var id = "" //id
var tile_id = "" //瓦片id
var road_id = ""//道路id
var lane_id = ""//车道id
var points: ArrayList<LonLatPoint>? = null//道路经纬度
var angle: Double? = 0.0//车道线id
override fun toString(): String {
return "CenterLine(id='$id', tile_id='$tile_id', road_id='$road_id', lane_id='$lane_id', points=$points, angle=$angle)"
}
}

View File

@@ -0,0 +1,111 @@
package com.mogo.eagle.core.data.map;
import java.io.Serializable;
public class LonLatPoint implements Serializable {
private double longitude;
private double latitude;
private double altitude;
private int duration;
private double angle = 0;
private String provider;
private double distance;
private double speed;
public LonLatPoint() {
}
public LonLatPoint(double longitude, double latitude) {
this.longitude = longitude;
this.latitude = latitude;
}
public LonLatPoint(double longitude, double latitude, double angle) {
this.longitude = longitude;
this.latitude = latitude;
this.angle = angle;
}
public LonLatPoint(double longitude, double latitude, double altitude, double angle) {
this.longitude = longitude;
this.latitude = latitude;
this.altitude = altitude;
this.angle = angle;
}
public String getProvider() {
return provider;
}
public void setProvider(String provider) {
this.provider = provider;
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getAltitude() {
return altitude;
}
public void setAltitude(double altitude) {
this.altitude = altitude;
}
public double getAngle() {
return angle;
}
public void setAngle(double angle) {
this.angle = angle;
}
public double getDistance() {
return distance;
}
public void setDistance(double distance) {
this.distance = distance;
}
public double getSpeed() {
return speed;
}
public void setSpeed(double speed) {
this.speed = speed;
}
@Override
public String toString() {
return "LonLatPoint{" +
"longitude=" + longitude +
", latitude=" + latitude +
", altitude=" + altitude +
", angle=" + angle +
'}';
}
}

View File

@@ -1,6 +1,7 @@
package com.mogo.eagle.core.function.api.map.hd
import androidx.annotation.RawRes
import com.mogo.eagle.core.data.map.CenterLine
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
/**
@@ -28,4 +29,9 @@ interface IMoGoMapFragmentProvider : IMoGoFunctionServerProvider {
* 设置地图视线角度
*/
fun setMapDAngle(mode: Int)
/**
* 获取车道中心线信息
*/
fun getCenterLineInfo(lon: Double, lat: Double, angle: Float): CenterLine?
}

View File

@@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.call.map
import androidx.annotation.RawRes
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths
import com.mogo.eagle.core.data.map.CenterLine
import com.mogo.eagle.core.function.api.map.hd.IMoGoMapFragmentProvider
import com.mogo.eagle.core.function.call.base.CallerBase
@@ -14,7 +15,7 @@ import com.mogo.eagle.core.function.call.base.CallerBase
object CallerHDMapManager : CallerBase() {
private val mapProviderApi: IMoGoMapFragmentProvider
get() = ARouter.getInstance().build(MoGoFragmentPaths.PATH_FRAGMENT_MAP)
.navigation() as IMoGoMapFragmentProvider;
.navigation() as IMoGoMapFragmentProvider;
/**
* 修改地图中心点
@@ -32,11 +33,21 @@ object CallerHDMapManager : CallerBase() {
* 修改高精地图自车图标
* 传入资源ID
*/
fun changeCurrentIcon(@RawRes iconId: Int){
fun changeCurrentIcon(@RawRes iconId: Int) {
mapProviderApi.changeCurrentIcon(iconId)
}
/**
* 设置地图视线角度
*/
fun setMapDAngle(mode: Int) {
mapProviderApi.setMapDAngle(mode)
}
/**
* 获取车道中心线信息
*/
fun getCenterLineInfo(lon: Double, lat: Double, angle: Float): CenterLine? {
return mapProviderApi.getCenterLineInfo(lon, lat, angle)
}
}