Commit 59ace3b7 authored by Qiu Xiang's avatar Qiu Xiang

实现覆盖物移除

parent 687842d9
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d
import android.view.View
import com.amap.api.maps.AMap import com.amap.api.maps.AMap
import com.amap.api.maps.MapView import com.amap.api.maps.MapView
import com.amap.api.maps.model.Marker import com.amap.api.maps.model.Marker
...@@ -8,6 +9,7 @@ import com.facebook.react.bridge.Arguments ...@@ -8,6 +9,7 @@ import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.WritableMap import com.facebook.react.bridge.WritableMap
import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.ThemedReactContext
import com.facebook.react.uimanager.events.RCTEventEmitter import com.facebook.react.uimanager.events.RCTEventEmitter
import com.facebook.react.views.view.ReactViewGroup
class AMapView(context: ThemedReactContext) : MapView(context) { class AMapView(context: ThemedReactContext) : MapView(context) {
private val eventEmitter: RCTEventEmitter = context.getJSModule(RCTEventEmitter::class.java) private val eventEmitter: RCTEventEmitter = context.getJSModule(RCTEventEmitter::class.java)
...@@ -95,4 +97,17 @@ class AMapView(context: ThemedReactContext) : MapView(context) { ...@@ -95,4 +97,17 @@ class AMapView(context: ThemedReactContext) : MapView(context) {
fun emit(id: Int?, name: String, data: WritableMap = Arguments.createMap()) { fun emit(id: Int?, name: String, data: WritableMap = Arguments.createMap()) {
id?.let { eventEmitter.receiveEvent(it, name, data) } id?.let { eventEmitter.receiveEvent(it, name, data) }
} }
fun remove(child: View) {
when (child) {
is AMapMarker -> {
markers.remove(child.marker?.id)
child.marker?.destroy()
}
is AMapPolyline -> {
polylines.remove(child.polyline?.id)
child.polyline?.remove()
}
}
}
} }
...@@ -14,15 +14,21 @@ internal class AMapViewManager : ViewGroupManager<AMapView>() { ...@@ -14,15 +14,21 @@ internal class AMapViewManager : ViewGroupManager<AMapView>() {
return "AMapView" return "AMapView"
} }
override fun createViewInstance(reactContext: ThemedReactContext): AMapView {
return AMapView(reactContext)
}
override fun addView(mapView: AMapView, child: View, index: Int) { override fun addView(mapView: AMapView, child: View, index: Int) {
super.addView(mapView, child, index)
when (child) { when (child) {
is AMapMarker -> mapView.addMarker(child) is AMapMarker -> mapView.addMarker(child)
is AMapPolyline -> mapView.addPolyline(child) is AMapPolyline -> mapView.addPolyline(child)
} }
} }
override fun createViewInstance(reactContext: ThemedReactContext): AMapView { override fun removeViewAt(parent: AMapView, index: Int) {
return AMapView(reactContext) parent.remove(parent.getChildAt(index))
super.removeViewAt(parent, index)
} }
override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any> { override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any> {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment