|
@@ -0,0 +1,56 @@
|
|
|
+import React, { Component } from 'react';
|
|
|
+import PubSub from 'pubsub-js';
|
|
|
+import { withLeaflet, LayerGroup } from 'react-leaflet';
|
|
|
+import POIMarker from '../common/POIMarker';
|
|
|
+
|
|
|
+/**
|
|
|
+ * MoveableObject layer allows to show
|
|
|
+ */
|
|
|
+class POIObjectLayer extends Component {
|
|
|
+ state = {
|
|
|
+ markers: [],
|
|
|
+ }
|
|
|
+
|
|
|
+ componentDidMount(){
|
|
|
+ PubSub.subscribe('map.poi.add', (msg, data) => {
|
|
|
+ let element = <POIMarker
|
|
|
+ data={data}
|
|
|
+ key={data.id}
|
|
|
+ ref={this.marker}
|
|
|
+ ></POIMarker>
|
|
|
+ this.setState({markers: [...this.state.markers, element]});
|
|
|
+ });
|
|
|
+
|
|
|
+ // PubSub.subscribe('map.poi.move', (msg, data) => {
|
|
|
+ // let marker = this.state.markers.filter(m => m.key == data.id);
|
|
|
+ // if(marker.length > 0){
|
|
|
+ // let element = <POIMarker
|
|
|
+ // data={data}
|
|
|
+ // key={data.id}
|
|
|
+ // ref={this.marker}
|
|
|
+ // ></POIMarker>
|
|
|
+ // this.setState({markers: [...this.state.markers.filter(m => m.key != data.id), element]});
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+
|
|
|
+ PubSub.subscribe('map.poi.remove', (msg, data) => {
|
|
|
+ let markers = this.state.markers.filter(m => m.key != data.id);
|
|
|
+ this.setState({markers: markers});
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ componentWillUnmount(){
|
|
|
+ PubSub.unsubscribe('map.poi.add');
|
|
|
+ PubSub.unsubscribe('map.poi.move');
|
|
|
+ PubSub.unsubscribe('map.poi.remove');
|
|
|
+ }
|
|
|
+
|
|
|
+ render() {
|
|
|
+ return (
|
|
|
+ <LayerGroup key="poi">
|
|
|
+ { this.state.markers }
|
|
|
+ </LayerGroup>
|
|
|
+ );
|
|
|
+ }
|
|
|
+}
|
|
|
+export default withLeaflet(POIObjectLayer);
|