2016-05-06 4 views
0

カスタムマーカー作成ボタンを作成し、その上にマーカーを追加しています。マップボックスでマーカーをドラッグしたときにマーカードラッグイベントを取得する方法LeafLet

私はその地図をドラッグできますが、ドラッグするとLatLngになってしまいます。 マーカーのドラッグイベントでlatlngを取得したいと考えています。下はマーカーを作成するためのコードです。

this.map.on('draw:created', function(e) { 
     e.layer.options.draggable = true; 
     this.drawnItems.addLayer(e.layer); 
     this.props.markerCoordinates(e.layer._latlng); 
     this.mapState = MAP_STATE.NONE; 
     mapSearch.searchByLocation(e.layer._latlng, this.getLocation); 
     this.setState({ 
      drawActiveClass: 'polygonAction clearfix', 
     }); 
    }.bind(this)); 

    drawMarker: function() { 
    if(this.mapState === MAP_STATE.DRAW) { 
     return; 
    } 
    this.drawnItems.clearLayers(); 
    this.mapState = MAP_STATE.DRAW; 
    this.drawHandler = new L.Draw.Marker(this.map,this.drawControl.options.draw.marker); 
    this.drawHandler.enable(); 
    this.setState({ 
     drawActiveClass: 'polygonAction clearfix active', 
     createMarkerErrorClass: 'hide' 
    }); 
} 

render: function() { 
    <li className={this.state.drawActiveClass} ref="drawMarker" onClick={this.drawMarker}> 
      <span className="drawAction">{this.props.drawAction}</span> 
    </li> 
} 

私はそれをドラッグ可能にしています。 それのためのドラッグイベントを追加する方法。

答えて

0

作成したイベント内にdragend event listnerを追加しました。

this.map.on('draw:created', function(e) { 
     e.layer.options.draggable = true; 
     e.layer.on('dragend',function(e) { 
      mapSearch.searchByLocation(e.target.getLatLng(),this.getLocation); 
     }.bind(this)); 
     this.drawnItems.addLayer(e.layer); 
     this.props.markerCoordinates(e.layer._latlng); 
     this.mapState = MAP_STATE.NONE; 
     mapSearch.searchByLocation(e.layer._latlng, this.getLocation); 
     this.setState({ 
      drawActiveClass: 'polygonAction clearfix', 
     }); 
    }.bind(this));