Commit 57b246fe authored by Qiu Xiang's avatar Qiu Xiang

优化事件处理

parent 48e84d00
......@@ -4,9 +4,7 @@ import android.graphics.Bitmap
import android.graphics.Canvas
import com.amap.api.maps.AMap
import com.amap.api.maps.model.*
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 AMapMarker(context: ThemedReactContext) : ReactViewGroup(context) {
......@@ -78,7 +76,6 @@ class AMapMarker(context: ThemedReactContext) : ReactViewGroup(context) {
}
private var bitmapDescriptor: BitmapDescriptor? = null
private val eventEmitter: RCTEventEmitter = context.getJSModule(RCTEventEmitter::class.java)
fun addToMap(map: AMap) {
marker = map.addMarker(MarkerOptions()
......@@ -119,8 +116,4 @@ class AMapMarker(context: ThemedReactContext) : ReactViewGroup(context) {
bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(bitmap)
marker?.setIcon(bitmapDescriptor)
}
fun sendEvent(name: String, data: WritableMap) {
eventEmitter.receiveEvent(id, name, data)
}
}
......@@ -6,9 +6,7 @@ import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.Polyline
import com.amap.api.maps.model.PolylineOptions
import com.facebook.react.bridge.ReadableArray
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 AMapPolyline(context: ThemedReactContext) : ReactViewGroup(context) {
......@@ -55,7 +53,6 @@ class AMapPolyline(context: ThemedReactContext) : ReactViewGroup(context) {
private var coordinates: ArrayList<LatLng> = ArrayList()
private var colors: ArrayList<Int> = ArrayList()
private val eventEmitter: RCTEventEmitter = context.getJSModule(RCTEventEmitter::class.java)
fun setCoordinates(coordinates: ReadableArray) {
this.coordinates = ArrayList((0..coordinates.size() - 1)
......@@ -81,8 +78,4 @@ class AMapPolyline(context: ThemedReactContext) : ReactViewGroup(context) {
.transparency(opacity)
.zIndex(zIndex))
}
fun sendEvent(name: String, data: WritableMap) {
eventEmitter.receiveEvent(id, name, data)
}
}
......@@ -23,21 +23,21 @@ class AMapView(context: ThemedReactContext) : MapView(context) {
map.myLocationStyle = locationStyle
map.setOnMapLoadedListener {
sendEvent("onMapLoaded", Arguments.createMap())
emit(id, "onMapLoaded")
}
map.setOnMapClickListener { latLng ->
val event = Arguments.createMap()
event.putDouble("latitude", latLng.latitude)
event.putDouble("longitude", latLng.longitude)
sendEvent("onMapClick", event)
emit(id, "onMapClick")
}
map.setOnMapLongClickListener { latLng ->
val event = Arguments.createMap()
event.putDouble("latitude", latLng.latitude)
event.putDouble("longitude", latLng.longitude)
sendEvent("onMapLongClick", event)
emit(id, "onMapLongClick", event)
}
map.setOnMyLocationChangeListener { location ->
......@@ -45,21 +45,21 @@ class AMapView(context: ThemedReactContext) : MapView(context) {
event.putDouble("latitude", location.latitude)
event.putDouble("longitude", location.longitude)
event.putDouble("accuracy", location.accuracy.toDouble())
sendEvent("onLocationChange", event)
emit(id, "onLocationChange")
}
map.setOnMarkerClickListener { marker ->
markers[marker.id]?.sendEvent("onMarkerClick", Arguments.createMap())
emit(markers[marker.id]?.id, "onMarkerClick")
false
}
map.setOnMarkerDragListener(object : AMap.OnMarkerDragListener {
override fun onMarkerDragStart(marker: Marker) {
markers[marker.id]?.sendEvent("onMarkerDragStart", Arguments.createMap())
emit(markers[marker.id]?.id, "onMarkerDragStart")
}
override fun onMarkerDrag(marker: Marker) {
markers[marker.id]?.sendEvent("onMarkerDrag", Arguments.createMap())
emit(markers[marker.id]?.id, "onMarkerDrag")
}
override fun onMarkerDragEnd(marker: Marker) {
......@@ -67,16 +67,16 @@ class AMapView(context: ThemedReactContext) : MapView(context) {
val data = Arguments.createMap()
data.putDouble("latitude", position.latitude)
data.putDouble("longitude", position.longitude)
markers[marker.id]?.sendEvent("onMarkerDragEnd", data)
emit(markers[marker.id]?.id, "onMarkerDragEnd", data)
}
})
map.setOnInfoWindowClickListener { marker ->
markers[marker.id]?.sendEvent("onInfoWindowClick", Arguments.createMap())
emit(markers[marker.id]?.id, "onInfoWindowClick")
}
map.setOnPolylineClickListener { polyline ->
polylines[polyline.id]?.sendEvent("onPolylineClick", Arguments.createMap())
emit(polylines[polyline.id]?.id, "onPolylineClick")
}
map.setInfoWindowAdapter(AMapInfoWindowAdapter(context, markers))
......@@ -92,7 +92,7 @@ class AMapView(context: ThemedReactContext) : MapView(context) {
polylines.put(polyline.polyline?.id!!, polyline)
}
fun sendEvent(name: String, data: WritableMap) {
eventEmitter.receiveEvent(id, name, data)
fun emit(id: Int?, name: String, data: WritableMap = Arguments.createMap()) {
id?.let { eventEmitter.receiveEvent(it, name, data) }
}
}
......@@ -11,5 +11,5 @@ class LayoutNode : LayoutShadowNode() {
layoutHeight.toInt()))
}
class Layout(var width: Int, var height: Int)
data class Layout(var width: Int, var height: Int)
}
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