如何将标记动态添加到 React-Leaflet 地图?
当用户点击地图时,我想添加新的标记。我无法让它工作。
import React, { Component } from 'react'
import { render } from 'react-dom';
import Control from 'react-leaflet-control';
import { Map, Marker, Popup, TileLayer, ZoomControl, ScaleControl } from 'react-leaflet';
import './Points.scss'
export default class PointsMap extends Component {
state = {
lat: 50.2,
lng: 30.2,
zoom: 13,
}
handleClick = (e) => {
this.addMarker();
}
addMarker() {
// A) Following raises error:
var marker3 = L.marker([50.5, 30.5]).addTo(this.refs.map);
// B) With following marker doesn't appear on map:
const position2 = [50,30];
<Marker map={this.refs.map} position={position2} />
}
render () {
const position = [this.state.lat, this.state.lng]
return (
<Map ref='map' center={position} zoom={this.state.zoom} onClick= {this.handleClick} >
<ZoomControl position="topright" />
<ScaleControl position="bottomright" />
<TileLayer
attribution='© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
/>
<Marker map={this.refs.map} position={position} >
<Popup>
<span>A pretty CSS3 popup. <br /> Easily customizable.</span>
</Popup>
</Marker>
</Map>
)
}
}
在addMarker()我尝试添加新的标记。我尝试通过两种方式做到这一点:
一种)
var marker3 = L.marker([50.5, 30.5]).addTo(this.refs.map);
它引发错误:
Uncaught TypeError: map.addLayer is not a function
at NewClass.addTo (leaflet-src.js:3937)
at PointsMap.addMarker (Points.js?12f5:54)
二)
const position2 = [50,30];
<Marker map={this.refs.map} position={position2} />
它不会添加任何新标记,也不会引发任何错误。
您知道如何动态添加/删除标记吗?