|
@@ -6,7 +6,6 @@ import android.graphics.Canvas;
|
|
|
import android.text.TextUtils;
|
|
import android.text.TextUtils;
|
|
|
import android.view.LayoutInflater;
|
|
import android.view.LayoutInflater;
|
|
|
import android.view.View;
|
|
import android.view.View;
|
|
|
-import android.widget.FrameLayout;
|
|
|
|
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.NonNull;
|
|
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
|
@@ -22,6 +21,7 @@ import com.atmob.map_amap_android.bean.MakerInfo;
|
|
|
import com.atmob.map_amap_android.bean.Popup;
|
|
import com.atmob.map_amap_android.bean.Popup;
|
|
|
import com.atmob.map_amap_android.contants.Constants;
|
|
import com.atmob.map_amap_android.contants.Constants;
|
|
|
import com.atmob.map_amap_android.databinding.ItemLocationMarkerBinding;
|
|
import com.atmob.map_amap_android.databinding.ItemLocationMarkerBinding;
|
|
|
|
|
+import com.atmob.map_amap_android.databinding.ItemTrackErrorMarkerBinding;
|
|
|
import com.atmob.map_amap_android.databinding.ItemTrackPassingMarkerBinding;
|
|
import com.atmob.map_amap_android.databinding.ItemTrackPassingMarkerBinding;
|
|
|
import com.atmob.map_amap_android.databinding.ItemTrackSelectedMarkerBinding;
|
|
import com.atmob.map_amap_android.databinding.ItemTrackSelectedMarkerBinding;
|
|
|
import com.atmob.map_amap_android.databinding.ItemTrackStartMarkerBinding;
|
|
import com.atmob.map_amap_android.databinding.ItemTrackStartMarkerBinding;
|
|
@@ -30,12 +30,14 @@ import com.atmob.map_amap_android.util.BitmapCallback;
|
|
|
import com.atmob.map_amap_android.util.GsonUtil;
|
|
import com.atmob.map_amap_android.util.GsonUtil;
|
|
|
import com.atmob.map_amap_android.util.ImageCacheLoader;
|
|
import com.atmob.map_amap_android.util.ImageCacheLoader;
|
|
|
import com.atmob.map_amap_android.util.LogUtil;
|
|
import com.atmob.map_amap_android.util.LogUtil;
|
|
|
|
|
+import com.atmob.map_amap_android.util.ParamUtil;
|
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.Gson;
|
|
|
import com.google.gson.reflect.TypeToken;
|
|
import com.google.gson.reflect.TypeToken;
|
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.Iterator;
|
|
import java.util.Iterator;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
|
|
|
|
|
|
import io.flutter.plugin.common.MethodCall;
|
|
import io.flutter.plugin.common.MethodCall;
|
|
@@ -76,7 +78,31 @@ public class MarkersController implements MyMethodCallHandler, AMap.OnMarkerClic
|
|
|
case Constants.METHOD_REPLACE_ALL_MARKERS:
|
|
case Constants.METHOD_REPLACE_ALL_MARKERS:
|
|
|
replaceAllMarkers(call, result);
|
|
replaceAllMarkers(call, result);
|
|
|
break;
|
|
break;
|
|
|
|
|
+ case Constants.METHOD_REMOVE_MARKER:
|
|
|
|
|
+ removeMarker(call, result);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ private void removeMarker(MethodCall call, MethodChannel.Result result) {
|
|
|
|
|
+ LogUtil.i(TAG, "removeMarker===>" + call.arguments());
|
|
|
|
|
+ Map<String, Object> arguments = call.arguments();
|
|
|
|
|
+ if (arguments == null || arguments.isEmpty()) {
|
|
|
|
|
+ result.error("-1", "removeMarker.arguments is empty", null);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ String markerId = ParamUtil.getString(arguments, "markerId");
|
|
|
|
|
+ if (TextUtils.isEmpty(markerId)) {
|
|
|
|
|
+ result.error("-1", "removeMarker.markerId is empty", null);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ Marker marker = currentMarkers.get(markerId);
|
|
|
|
|
+ if (marker != null) {
|
|
|
|
|
+ marker.remove();
|
|
|
|
|
+ currentMarkers.remove(markerId);
|
|
|
}
|
|
}
|
|
|
|
|
+ result.success(null);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void replaceAllMarkers(MethodCall call, MethodChannel.Result result) {
|
|
private void replaceAllMarkers(MethodCall call, MethodChannel.Result result) {
|
|
@@ -158,7 +184,7 @@ public class MarkersController implements MyMethodCallHandler, AMap.OnMarkerClic
|
|
|
Object object = marker.getObject();
|
|
Object object = marker.getObject();
|
|
|
if (object instanceof MakerInfo) {
|
|
if (object instanceof MakerInfo) {
|
|
|
MakerInfo cacheInfo = (MakerInfo) object;
|
|
MakerInfo cacheInfo = (MakerInfo) object;
|
|
|
- if (cacheInfo.getMarkerType() == MakerInfo.MarkerType.TRACE_SELECT_POINT) {
|
|
|
|
|
|
|
+ if (cacheInfo.getMarkerType() == MakerInfo.MarkerType.TRACE_POPUP_POINT) {
|
|
|
boolean popupChanged = !Objects.equals(cacheInfo.getPopup(), makerInfo.getPopup());
|
|
boolean popupChanged = !Objects.equals(cacheInfo.getPopup(), makerInfo.getPopup());
|
|
|
if (popupChanged) {
|
|
if (popupChanged) {
|
|
|
BitmapDescriptor markerBitmap = getMarkerBitmap(makerInfo, null);
|
|
BitmapDescriptor markerBitmap = getMarkerBitmap(makerInfo, null);
|
|
@@ -235,9 +261,9 @@ public class MarkersController implements MyMethodCallHandler, AMap.OnMarkerClic
|
|
|
.icon(markerBitmap)
|
|
.icon(markerBitmap)
|
|
|
.anchor(0.5f, 0.9f);
|
|
.anchor(0.5f, 0.9f);
|
|
|
|
|
|
|
|
- if (makerInfo.getMarkerType() == MakerInfo.MarkerType.TRACE_PASSING_POINT) {
|
|
|
|
|
|
|
+ if (makerInfo.getMarkerType() == MakerInfo.MarkerType.TRACE_PASSING_POINT || makerInfo.getMarkerType() == MakerInfo.MarkerType.TRACE_ERROR_POINT) {
|
|
|
markerOption.anchor(0.5f, 0.5f);
|
|
markerOption.anchor(0.5f, 0.5f);
|
|
|
- } else if (makerInfo.getMarkerType() == MakerInfo.MarkerType.TRACE_SELECT_POINT) {
|
|
|
|
|
|
|
+ } else if (makerInfo.getMarkerType() == MakerInfo.MarkerType.TRACE_POPUP_POINT) {
|
|
|
markerOption.anchor(0.5f, 1.1f);
|
|
markerOption.anchor(0.5f, 1.1f);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -293,7 +319,7 @@ public class MarkersController implements MyMethodCallHandler, AMap.OnMarkerClic
|
|
|
ItemTrackPassingMarkerBinding trackPassingMarkerBinding = ItemTrackPassingMarkerBinding.inflate(LayoutInflater.from(context));
|
|
ItemTrackPassingMarkerBinding trackPassingMarkerBinding = ItemTrackPassingMarkerBinding.inflate(LayoutInflater.from(context));
|
|
|
ConstraintLayout view = trackPassingMarkerBinding.getRoot();
|
|
ConstraintLayout view = trackPassingMarkerBinding.getRoot();
|
|
|
return viewGetBitmapDescriptor(view);
|
|
return viewGetBitmapDescriptor(view);
|
|
|
- } else if (markerInfo.getMarkerType() == MakerInfo.MarkerType.TRACE_SELECT_POINT) {
|
|
|
|
|
|
|
+ } else if (markerInfo.getMarkerType() == MakerInfo.MarkerType.TRACE_POPUP_POINT) {
|
|
|
ItemTrackSelectedMarkerBinding trackSelectedMarkerBinding = ItemTrackSelectedMarkerBinding.inflate(LayoutInflater.from(context));
|
|
ItemTrackSelectedMarkerBinding trackSelectedMarkerBinding = ItemTrackSelectedMarkerBinding.inflate(LayoutInflater.from(context));
|
|
|
Popup popup = markerInfo.getPopup();
|
|
Popup popup = markerInfo.getPopup();
|
|
|
if (popup != null) {
|
|
if (popup != null) {
|
|
@@ -302,6 +328,10 @@ public class MarkersController implements MyMethodCallHandler, AMap.OnMarkerClic
|
|
|
}
|
|
}
|
|
|
ConstraintLayout view = trackSelectedMarkerBinding.getRoot();
|
|
ConstraintLayout view = trackSelectedMarkerBinding.getRoot();
|
|
|
return viewGetBitmapDescriptor(view);
|
|
return viewGetBitmapDescriptor(view);
|
|
|
|
|
+ } else if (markerInfo.getMarkerType() == MakerInfo.MarkerType.TRACE_ERROR_POINT) {
|
|
|
|
|
+ ItemTrackErrorMarkerBinding trackPassingMarkerBinding = ItemTrackErrorMarkerBinding.inflate(LayoutInflater.from(context));
|
|
|
|
|
+ ConstraintLayout view = trackPassingMarkerBinding.getRoot();
|
|
|
|
|
+ return viewGetBitmapDescriptor(view);
|
|
|
}
|
|
}
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|