2.2.0 绘制重点marker 调整

This commit is contained in:
lianglihui
2021-12-13 17:39:09 +08:00
parent 85824c6901
commit 19b05d675e
7 changed files with 46 additions and 100 deletions

View File

@@ -213,7 +213,7 @@ public class SmallMapDirectionView
);
Log.d(TAG, "calculateDistance=" + calculateDistance);
if (calculateDistance <= 20) {
if (calculateDistance <= 5) {
clearPolyline();
mCoordinatesLatLng.clear();
}

View File

@@ -8,15 +8,22 @@ import android.view.View;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.mvp.BaseFragment;
import com.mogo.eagle.core.data.autopilot.ADASTrajectoryInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningListener;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.api.map.smp.IMogoSmallMapProvider;
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.service.adas.IMogoAdasOCHCallback;
import com.mogo.utils.UiThreadHandler;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
@@ -26,7 +33,7 @@ import java.util.List;
* @date 2021/5/19 10:50 上午
*/
@Route(path = MoGoFragmentPaths.PATH_FRAGMENT_SMP)
public class SmallMapFragment extends BaseFragment implements IMogoSmallMapProvider, IMoGoAutopilotPlanningListener, IMogoAdasOCHCallback {
public class SmallMapFragment extends BaseFragment implements IMogoSmallMapProvider, IMoGoAutopilotPlanningListener, IMogoAdasOCHCallback , IMoGoAutopilotStatusListener {
private final String TAG = "SmallMapFragment";
protected SmallMapDirectionView mSmallMapDirectionView;
@@ -73,7 +80,12 @@ public class SmallMapFragment extends BaseFragment implements IMogoSmallMapProvi
public void drawablePolyline(List<MogoLatLng> coordinates) {
if (mSmallMapDirectionView != null) {
mSmallMapDirectionView.convert(coordinates);
mSmallMapDirectionView.drawablePolyline();
UiThreadHandler.post(new Runnable() {
@Override
public void run() {
mSmallMapDirectionView.drawablePolyline();
}
});
}
}
@@ -133,8 +145,28 @@ public class SmallMapFragment extends BaseFragment implements IMogoSmallMapProvi
@Override
public void onStateChanged(int state, String reason) {
if (state != IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING) {
}
@Override
public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autoPilotStatusInfo) {
if (autoPilotStatusInfo.getControl_pilotmode() != 1){
clearPolyline();
}
}
@Override
public void onAutopilotArriveAtStation(@Nullable AutopilotStationInfo autopilotWayArrive) {
}
@Override
public void onAutopilotGuardian(@Nullable AutopilotGuardianStatusInfo guardianInfo) {
}
@Override
public void onAutopilotSNRequest() {
}
}

View File

@@ -25,20 +25,17 @@ import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
public class MogoRouteOverlayManager implements IMogoCarLocationChangedListener2, IMoGoAutopilotPlanningListener, IMoGoAutopilotStatusListener {
public class MogoRouteOverlayManager implements IMoGoAutopilotPlanningListener, IMoGoAutopilotStatusListener {
private static volatile MogoRouteOverlayManager sInstance;
private Context mContext;
private String TAG = "MogoRouteOverlayManager";
private String TAG2 = "MogoRouteOverlayManager routes";
private int STATUS_AUTOPILOT = 0;//0 非自动驾驶 ; 1 自动驾驶
private MogoRouteOverlayManager(Context context) {
mContext = context;
}
public void init() {
MogoApisHandler.getInstance()
.getApis()
.getRegisterCenterApi()
.registerCarLocationChangedListener(TAG, this);
CallerAutopilotPlanningListenerManager.INSTANCE.addListener(TAG, this);
CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, this);
}
@@ -54,34 +51,6 @@ public class MogoRouteOverlayManager implements IMogoCarLocationChangedListener2
return sInstance;
}
@Override
public void onCarLocationChanged2(Location latLng) {
// updateLocation(latLng);
}
@Override
public void onCarLocationChanged(MogoLatLng latLng) {
}
public void updateLocation(Location location) {
if (location == null) {
return;
}
//坐标转换
MogoLocation loc = new MogoLocation();
loc.setTime(loc.getTime());
loc.setAccuracy(location.getAccuracy());
loc.setSpeed(location.getSpeed());
loc.setLongitude(location.getLongitude());
loc.setLatitude(location.getLatitude());
loc.setAltitude(location.getAltitude());
loc.setBearing(location.getBearing());
loc.setProvider(location.getProvider());
RouteOverlayDrawer.getInstance(mContext).drawRouteOverlay(loc);
}
@Override
public void onAutopilotTrajectory(ArrayList<ADASTrajectoryInfo> trajectoryInfos) {
if (trajectoryInfos == null || trajectoryInfos.size() == 0) {
@@ -111,9 +80,7 @@ public class MogoRouteOverlayManager implements IMogoCarLocationChangedListener2
for (AutopilotRouteInfo.RouteModels routeModel : routeList.getModels()) {
latLngList.add(new MogoLatLng(routeModel.getLat(), routeModel.getLon()));
}
Log.e(TAG, "routeResult:" + latLngList.size());
RouteOverlayDrawer.getInstance(mContext).putRouteList(latLngList);
Log.d(TAG2, "routeResult:" + latLngList.size());
int listSize = latLngList.size();
RouteOverlayDrawer.getInstance(mContext).addEndingMarker(latLngList.get(listSize - 1).lat,latLngList.get(listSize - 1).lon);
}

View File

@@ -3,6 +3,7 @@ package com.mogo.module.service.routeoverlay;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.data.map.MogoLocation;
@@ -69,71 +70,21 @@ public class RouteOverlayDrawer {
return sInstance;
}
private List<MogoLatLng> mRouteList;
public void drawRouteOverlay(MogoLocation location){
if (mRouteList == null ){
clearMogoRouteOverlay();
return;
}
if (mRouteList.size() >0){
//adas回调导航路径 绘制引导线
draw(location,mRouteList);
}
}
/**
* 绘制最优路线
*
* @param routelist 要绘制的经纬度度集合
*/
public IMogoPolyline draw(MogoLocation carLocal, List<MogoLatLng> routelist) {
clearMogoRouteOverlay();
if (routelist != null) {
if (carLocal == null){
for (MogoLatLng polyline : routelist) {
// Log.e("IMogoPolyline",polyline.getLat()+":"+polyline.lon);
//需要剔除已经行驶过的经纬度,这里需要比对推荐路线集合中的点是否在当前车辆行驶方向前面如果不在则抛弃
mPolylinePointList.add(polyline);
}
}else {
// 将当前车辆位置放进去
// mPolylinePointList.add(new MogoLatLng(carLocal.getLatitude(), carLocal.getLongitude()));
for (MogoLatLng polyline : routelist) {
// Log.e("IMogoPolyline",polyline.getLat()+":"+polyline.lon);
if (LocationUtils.isPointOnCarFront(carLocal, polyline)) {
}
mPolylinePointList.add(polyline);
//需要剔除已经行驶过的经纬度,这里需要比对推荐路线集合中的点是否在当前车辆行驶方向前面如果不在则抛弃
// Log.e("lianglihui",polyline.getLat()+":"+polyline.getLon());
}
}
// 过滤后台推送的推荐路线集合
mPolylineOptions.setGps(true);
mPolylineColors.addAll(ColorUtils.getGradientAlpha("#002965ED", "#FF2965ED", "#002965ED", mPolylinePointList.size()));
// 替换路径集合
mPolylineOptions.points(mPolylinePointList);
// 线条粗细,渐变,渐变色值
mPolylineOptions.width(14).useGradient(true).colorValues(mPolylineColors);
// 绘制线
mMoGoPolyline = mogoOverlayManager.addPolyline(mPolylineOptions);
}
return mMoGoPolyline;
}
public void addEndingMarker(double lat,double lon){
if (markderOptions == null){
markderOptions = new MogoMarkerOptions().
set3DMode(MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode())
.matchOnRoadSide(true)
.gps(true)
.icon(endingBitmap)
.owner(markerType)
.zIndex(20001);
.anchor(0.5f, 0.5f)
.zIndex(30001);
// .object(markerShowEntity)
}
markderOptions.latitude(lat).longitude(lon);
Log.d("lianglihui","addEndingMarker-"+lat+":"+lon);
endMarker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(markerType, markderOptions);
}
@@ -152,9 +103,6 @@ public class RouteOverlayDrawer {
}
}
public void putRouteList(List<MogoLatLng> routeList) {
this.mRouteList = routeList;
}
public void drawTrajectoryList(List<MogoLatLng> routeList) {
// clearMogoRouteOverlay();
@@ -163,9 +111,8 @@ public class RouteOverlayDrawer {
for (MogoLatLng latLng : routeList) {
mPolylinePointList.add(latLng);
}
if (mPolylineColors.isEmpty()){
mPolylineColors.addAll(ColorUtils.getGradientAlpha("#002965ED", "#FF2965ED", "#2AAFFD", mPolylinePointList.size()));
}
mPolylineColors.clear();
mPolylineColors.addAll(ColorUtils.getGradientAlpha("#002965ED", "#FF2965ED", "#2AAFFD", mPolylinePointList.size()));
// 线条粗细,渐变,渐变色值
mPolylineOptions.width(12).useGradient(true).colorValues(mPolylineColors);
if (mMoGoPolyline == null || mMoGoPolyline.isDestroyed()){

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB