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

实现覆盖物移除

parent 687842d9
package cn.qiuxiang.react.amap3d
import android.view.View
import com.amap.api.maps.AMap
import com.amap.api.maps.MapView
import com.amap.api.maps.model.Marker
......@@ -8,6 +9,7 @@ import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.WritableMap
import com.facebook.react.uimanager.ThemedReactContext
import com.facebook.react.uimanager.events.RCTEventEmitter
import com.facebook.react.views.view.ReactViewGroup
class AMapView(context: ThemedReactContext) : MapView(context) {
private val eventEmitter: RCTEventEmitter = context.getJSModule(RCTEventEmitter::class.java)
......@@ -95,4 +97,17 @@ class AMapView(context: ThemedReactContext) : MapView(context) {
fun emit(id: Int?, name: String, data: WritableMap = Arguments.createMap()) {
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>() {
return "AMapView"
}
override fun createViewInstance(reactContext: ThemedReactContext): AMapView {
return AMapView(reactContext)
}
override fun addView(mapView: AMapView, child: View, index: Int) {
super.addView(mapView, child, index)
when (child) {
is AMapMarker -> mapView.addMarker(child)
is AMapPolyline -> mapView.addPolyline(child)
}
}
override fun createViewInstance(reactContext: ThemedReactContext): AMapView {
return AMapView(reactContext)
override fun removeViewAt(parent: AMapView, index: Int) {
parent.remove(parent.getChildAt(index))
super.removeViewAt(parent, index)
}
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