Commit f5e6b6a7 authored by Qiu Xiang's avatar Qiu Xiang
Browse files

添加 Marker Drag 事件接口

parent ab572dfa
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -24,6 +24,9 @@ class AMapMarkerManager extends SimpleViewManager<AMapMarker> {
    public Map<String, Object> getExportedCustomDirectEventTypeConstants() {
        HashMap<String, Object> map = new HashMap<>();
        map.put("onMarkerClick", MapBuilder.of("registrationName", "onMarkerClick"));
        map.put("onMarkerDragStart", MapBuilder.of("registrationName", "onMarkerDragStart"));
        map.put("onMarkerDrag", MapBuilder.of("registrationName", "onMarkerDrag"));
        map.put("onMarkerDragEnd", MapBuilder.of("registrationName", "onMarkerDragEnd"));
        return map;
    }

+21 −0
Original line number Diff line number Diff line
@@ -81,6 +81,27 @@ public class AMapView extends MapView {
                return false;
            }
        });

        map.setOnMarkerDragListener(new AMap.OnMarkerDragListener() {
            @Override
            public void onMarkerDragStart(Marker marker) {
                markers.get(marker.getId()).sendEvent("onMarkerDragStart", Arguments.createMap());
            }

            @Override
            public void onMarkerDrag(Marker marker) {
                markers.get(marker.getId()).sendEvent("onMarkerDrag", Arguments.createMap());
            }

            @Override
            public void onMarkerDragEnd(Marker marker) {
                LatLng position = marker.getPosition();
                WritableMap data = Arguments.createMap();
                data.putDouble("latitude", position.latitude);
                data.putDouble("longitude", position.longitude);
                markers.get(marker.getId()).sendEvent("onMarkerDragEnd", data);
            }
        });
    }

    public void addMarker(AMapMarker marker) {
+6 −0
Original line number Diff line number Diff line
@@ -52,6 +52,9 @@ class Marker extends Component {
    zIndex: PropTypes.number,

    onPress: React.PropTypes.func,
    onDragStart: React.PropTypes.func,
    onDrag: React.PropTypes.func,
    onDragEnd: React.PropTypes.func,
  }

  _eventHandler(name) {
@@ -66,6 +69,9 @@ class Marker extends Component {
    const props = {
      ...this.props,
      onMarkerClick: this._eventHandler('onPress'),
      onMarkerDragStart: this._eventHandler('onDragStart'),
      onMarkerDrag: this._eventHandler('onDrag'),
      onMarkerDragEnd: this._eventHandler('onDragEnd'),
    }
    if (typeof props.image === 'number') {
      props.image = resolveAssetSource(this.props.image).uri
+25 −12
Original line number Diff line number Diff line
@@ -9,18 +9,31 @@ export default class MarkerComponent extends Component {

  render() {
    return <MapView style={StyleSheet.absoluteFill}>
      <Marker draggable title='这是一个可拖拽的 Marker' coordinate={{
      <Marker
        title='一个可拖拽的 Marker'
        draggable
        onDragEnd={({nativeEvent}) => console.log(nativeEvent)}
        coordinate={{
          latitude: 39.806901,
          longitude: 116.397972,
      }}/>
      <Marker image='HUE_RED' title='其他颜色' coordinate={{
        }}
      />
      <Marker
        image='HUE_RED'
        title='一个红色的 Marker'
        coordinate={{
          latitude: 39.806901,
          longitude: 116.297972,
      }}/>
      <Marker image={require('../images/marker.png')} title='自定义图标' coordinate={{
        }}
      />
      <Marker
        image={require('../images/marker.png')}
        title='自定义图片'
        coordinate={{
          latitude: 39.906901,
          longitude: 116.397972,
      }}/>
        }}
      />
    </MapView>
  }
}