add drawline

This commit is contained in:
zhongchao
2021-06-24 14:54:34 +08:00
parent 778895847d
commit 339d74c29c
2 changed files with 98 additions and 6 deletions

View File

@@ -6,9 +6,11 @@ import android.os.Handler;
import android.os.Message;
import com.mogo.map.MogoLatLng;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.module.adas.entity.AdasAutoPilotLocReceiverBean;
import com.mogo.module.adas.model.AdasServiceModel;
import com.mogo.module.adas.overlay.LineOverlayManager;
import com.mogo.module.adas.view.DispatchRemindDialog;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.service.connection.IMogoOnMessageListener;
@@ -34,10 +36,13 @@ public class AdasAutoPilotManager implements IMogoOnMessageListener<AdasAutoPilo
private static final String TAG = "AdasAutoPilotManager";
private static volatile AdasAutoPilotManager instance;
private static final byte[] obj = new byte[0];
private Context mContext;
private static final int MSG_SOCKET_TYPE = 501000;
private static final int MSG_TYPE_SHOW_DIALOG = 0;
private DispatchRemindDialog dispatchRemindDialog;
private LineOverlayManager lineOverlayManager;
private MogoLocation mogoLocation;
private AdasAutoPilotManager() {
@@ -66,6 +71,7 @@ public class AdasAutoPilotManager implements IMogoOnMessageListener<AdasAutoPilo
};
public void initSocket(Context context) {
mContext = context;
MogoApisHandler.getInstance()
.getApis()
.getSocketManagerApi(context).registerOnMessageListener(MSG_SOCKET_TYPE, this);
@@ -102,14 +108,19 @@ public class AdasAutoPilotManager implements IMogoOnMessageListener<AdasAutoPilo
@Override
public void notifyAutopilotState(AutopilotStatus autopilotStatus) {
AdasServiceModel.getInstance().uploadAutopilotStatus(autopilotStatus);
}
@Override
public void autopilotRoute(AutopilotRoute autopilotRoute) {
AdasServiceModel.getInstance().uploadAutopilotRoute(autopilotRoute.getModels());
//todo 画线
if (lineOverlayManager == null) {
lineOverlayManager = new LineOverlayManager(mContext);
}
List<MogoLatLng> latLngList = new ArrayList<>();
for (AutopilotRoute.RouteModels routeModel : autopilotRoute.getModels()) {
latLngList.add(new MogoLatLng(routeModel.getLat(), routeModel.getLon()));
}
lineOverlayManager.draw(mogoLocation, latLngList);
}
@Override
@@ -151,12 +162,22 @@ public class AdasAutoPilotManager implements IMogoOnMessageListener<AdasAutoPilo
}
@Override
public void onCarLocationChanged2(Location latLng) {
public void onCarLocationChanged2(Location location) {
//坐标转换
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());
mogoLocation = loc;
}
@Override
public void onCarLocationChanged(MogoLatLng latLng) {
public void onCarLocationChanged(MogoLatLng mogoLatLng) {
}
}

View File

@@ -0,0 +1,71 @@
package com.mogo.module.adas.overlay;
import android.content.Context;
import com.mogo.map.MogoLatLng;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.overlay.IMogoOverlayManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.overlay.MogoPolylineOptions;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.utils.LocationUtils;
import com.mogo.utils.ColorUtils;
import java.util.ArrayList;
import java.util.List;
public class LineOverlayManager {
private IMogoPolyline mMoGoPolyline;
// 连接线参数
private MogoPolylineOptions mPolylineOptions;
// 线路径集合
private List<MogoLatLng> mPolylinePointList;
// 渐变色
private List<Integer> mPolylineColors;
IMogoOverlayManager mogoOverlayManager;
private Context mContext;
public LineOverlayManager(Context context) {
mPolylineOptions = new MogoPolylineOptions();
// 绘制路径集合
mPolylinePointList = new ArrayList<>();
// 引导线颜色
mPolylineColors = new ArrayList<>();
mContext = context;
mogoOverlayManager = MogoApisHandler.getInstance().getApis().getMapServiceApi().getOverlayManager(mContext);
}
/**
* 绘制最优路线
*
* @param polylinePoint 要绘制的经纬度度集合
*/
public void draw(MogoLocation carLocal, List<MogoLatLng> polylinePoint) {
if (mMoGoPolyline != null) {
mMoGoPolyline.remove();
mPolylinePointList.clear();
mPolylineColors.clear();
}
if (polylinePoint != null) {
// 将当前车辆位置放进去
mPolylinePointList.add(new MogoLatLng(carLocal.getLatitude(), carLocal.getLongitude()));
// 过滤后台推送的推荐路线集合
for (MogoLatLng polyline : polylinePoint) {
//需要剔除已经行驶过的经纬度,这里需要比对推荐路线集合中的点是否在当前车辆行驶方向前面如果不在则抛弃
if (LocationUtils.isPointOnCarFront(carLocal, polyline)) {
mPolylinePointList.add(polyline);
}
}
mPolylineColors.addAll(ColorUtils.getGradientAlpha("#002965ED", "#FF2965ED", "#002965ED", mPolylinePointList.size()));
// 替换路径集合
mPolylineOptions.points(mPolylinePointList);
// 线条粗细,渐变,渐变色值
mPolylineOptions.width(25).useGradient(true).colorValues(mPolylineColors);
// 绘制线
mMoGoPolyline = mogoOverlayManager.addPolyline(mPolylineOptions);
}
}
}