Commit f5e6b6a7 authored by Qiu Xiang's avatar Qiu Xiang

添加 Marker Drag 事件接口

parent ab572dfa
......@@ -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;
}
......
......@@ -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) {
......
......@@ -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
......
......@@ -9,18 +9,31 @@ export default class MarkerComponent extends Component {
render() {
return <MapView style={StyleSheet.absoluteFill}>
<Marker draggable title='这是一个可拖拽的 Marker' coordinate={{
latitude: 39.806901,
longitude: 116.397972,
}}/>
<Marker image='HUE_RED' title='其他颜色' coordinate={{
latitude: 39.806901,
longitude: 116.297972,
}}/>
<Marker image={require('../images/marker.png')} title='自定义图标' coordinate={{
latitude: 39.906901,
longitude: 116.397972,
}}/>
<Marker
title='一个可拖拽的 Marker'
draggable
onDragEnd={({nativeEvent}) => console.log(nativeEvent)}
coordinate={{
latitude: 39.806901,
longitude: 116.397972,
}}
/>
<Marker
image='HUE_RED'
title='一个红色的 Marker'
coordinate={{
latitude: 39.806901,
longitude: 116.297972,
}}
/>
<Marker
image={require('../images/marker.png')}
title='自定义图片'
coordinate={{
latitude: 39.906901,
longitude: 116.397972,
}}
/>
</MapView>
}
}
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