react-leaflet 获取当前 latlng onClick
react-leaflet get current latlng onClick
如果有人能帮助我,我会很高兴...
我已经在我的 React 项目上安装了 react-leaflet 并且地图组件已成功加载,我需要获取当前的 latlng 并在我单击地图时在弹出窗口中显示它,但我不知道如何:(
请...请...帮助我...
这是我的代码
import React from 'react'
import { Map as LeafletMap, TileLayer, Marker, Popup } from 'react-leaflet';
class Mapp extends React.Component {
componentDidMount() {
}
render() {
return (
<LeafletMap
center={[35.755229,51.304470]}
zoom={16}
maxZoom={20}
attributionControl={true}
zoomControl={true}
doubleClickZoom={true}
scrollWheelZoom={true}
dragging={true}
animate={true}
easeLinearity={0.35}
>
<TileLayer
url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
/>
<Marker position={[35.755229,51.304470]}
draggable={true}
>
<Popup >
Popup for any custom information.
</Popup>
</Marker>
</LeafletMap>
);
}
}
export default Mapp;
你是如何实现的?
这将是开始:
使用来自 LeafletMap 组件的点击(参见 https://leafletjs.com/reference-1.4.0.html#map-click)事件并调用您的函数,例如:
<LeafletMap
center={[35.755229,51.304470]}
zoom={16}
maxZoom={20}
attributionControl={true}
zoomControl={true}
doubleClickZoom={true}
scrollWheelZoom={true}
dragging={true}
animate={true}
easeLinearity={0.35}
onclick={this.handleClick}>
>
...
</LeafletMap>
在您的 handleClick 函数中,您可以像这样获取纬度和经度信息:
handleClick = (e) => {
const { lat, lng } = e.latlng;
console.log(lat, lng);
}
从这里开始,您可以使用您要查找的信息创建标记/弹出窗口。
附加提示:请确保您的代码正确包装在 post..
以下是点击地图后如何在弹出窗口中显示标记位置的示例:
class MapExample extends Component {
constructor(props) {
super(props);
this.state = {
currentPos: null
};
this.handleClick = this.handleClick.bind(this);
}
handleClick(e){
this.setState({ currentPos: e.latlng });
}
render() {
return (
<div>
<Map center={this.props.center} zoom={this.props.zoom} onClick={this.handleClick}>
<TileLayer
url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
/>
{ this.state.currentPos && <Marker position={this.state.currentPos} draggable={true}>
<Popup position={this.state.currentPos}>
Current location: <pre>{JSON.stringify(this.state.currentPos, null, 2)}</pre>
</Popup>
</Marker>}
</Map>
</div>
)
}
}
解释:
currentPos
状态用于保持标记位置
event.latLng
属性 Map.onClick
事件处理程序 returns 鼠标事件位置
Here is a demo供大家参考
如果您使用 react-leaflet 版本 3.x,则此操作无效。在这种情况下,请在添加到地图的虚拟组件中使用 useMapEvents 挂钩。比如你想console.log点击的位置:
const LocationFinderDummy = () => {
const map = useMapEvents({
click(e) {
console.log(e.latlng);
},
});
return null;
};
然后在地图中使用LocationFinderDummy如下:
<MapContainer
center={[0, 0]}
zoom={6}>
<LocationFinderDummy />
</MapContainer>
如果有人能帮助我,我会很高兴... 我已经在我的 React 项目上安装了 react-leaflet 并且地图组件已成功加载,我需要获取当前的 latlng 并在我单击地图时在弹出窗口中显示它,但我不知道如何:(
请...请...帮助我...
这是我的代码
import React from 'react'
import { Map as LeafletMap, TileLayer, Marker, Popup } from 'react-leaflet';
class Mapp extends React.Component {
componentDidMount() {
}
render() {
return (
<LeafletMap
center={[35.755229,51.304470]}
zoom={16}
maxZoom={20}
attributionControl={true}
zoomControl={true}
doubleClickZoom={true}
scrollWheelZoom={true}
dragging={true}
animate={true}
easeLinearity={0.35}
>
<TileLayer
url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
/>
<Marker position={[35.755229,51.304470]}
draggable={true}
>
<Popup >
Popup for any custom information.
</Popup>
</Marker>
</LeafletMap>
);
}
}
export default Mapp;
你是如何实现的?
这将是开始:
使用来自 LeafletMap 组件的点击(参见 https://leafletjs.com/reference-1.4.0.html#map-click)事件并调用您的函数,例如:
<LeafletMap
center={[35.755229,51.304470]}
zoom={16}
maxZoom={20}
attributionControl={true}
zoomControl={true}
doubleClickZoom={true}
scrollWheelZoom={true}
dragging={true}
animate={true}
easeLinearity={0.35}
onclick={this.handleClick}>
>
...
</LeafletMap>
在您的 handleClick 函数中,您可以像这样获取纬度和经度信息:
handleClick = (e) => {
const { lat, lng } = e.latlng;
console.log(lat, lng);
}
从这里开始,您可以使用您要查找的信息创建标记/弹出窗口。
附加提示:请确保您的代码正确包装在 post..
以下是点击地图后如何在弹出窗口中显示标记位置的示例:
class MapExample extends Component {
constructor(props) {
super(props);
this.state = {
currentPos: null
};
this.handleClick = this.handleClick.bind(this);
}
handleClick(e){
this.setState({ currentPos: e.latlng });
}
render() {
return (
<div>
<Map center={this.props.center} zoom={this.props.zoom} onClick={this.handleClick}>
<TileLayer
url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
/>
{ this.state.currentPos && <Marker position={this.state.currentPos} draggable={true}>
<Popup position={this.state.currentPos}>
Current location: <pre>{JSON.stringify(this.state.currentPos, null, 2)}</pre>
</Popup>
</Marker>}
</Map>
</div>
)
}
}
解释:
currentPos
状态用于保持标记位置event.latLng
属性Map.onClick
事件处理程序 returns 鼠标事件位置
Here is a demo供大家参考
如果您使用 react-leaflet 版本 3.x,则此操作无效。在这种情况下,请在添加到地图的虚拟组件中使用 useMapEvents 挂钩。比如你想console.log点击的位置:
const LocationFinderDummy = () => {
const map = useMapEvents({
click(e) {
console.log(e.latlng);
},
});
return null;
};
然后在地图中使用LocationFinderDummy如下:
<MapContainer
center={[0, 0]}
zoom={6}>
<LocationFinderDummy />
</MapContainer>