gpt4 book ai didi

reactjs - 如何在 react 中使用 map 作为位置输入?

转载 作者:行者123 更新时间:2023-12-03 14:22:43 26 4
gpt4 key购买 nike

我正在尝试制作一个表单,用户可以搜索他们的位置或固定他的位置。我使用 react-leaflet 加载 map ,使用 react-leaflet-search 添加搜索功能。搜索功能运行良好。您可以在下面看到代码。

<Map center={position} zoom={zoom}  onDragEnd = {function(e){ console.log(e);}} >
<TileLayer
attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
url='https://{s}.tile.osm.org/{z}/{x}/{y}.png'/>
<Search
position="topright"
showPopup={false}
provider="OpenStreetMap"
showMarker={true}
openSearchOnLoad={true}
closeResultsOnClick={true}
providerOptions={{ region: "np" }}/>
</Map>

我想要做的是访问用户输入的位置或用户选择位置后显示的标记的纬度经度。我尝试搜索事件监听器,但找不到任何事件监听器。目前我正在尝试使用 onDragEnd 事件,但尚未成功。谁能告诉我如何实现我想要做的事情?

最佳答案

不幸的是react-leaflet-search没有正确的方法来检索搜索结果。我们可以使用 mapStateModifier 回调来获取搜索结果坐标 LatLng 对象,但我们必须将 map flyTo 调用设置为嗯:

render() {
const position = [51.505, -0.09];
const zoom = 13;

return (
<div>
<Map
ref={ref => this.mapRef = ref}
center={position}
zoom={zoom}
>
<TileLayer
attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
url='https://{s}.tile.osm.org/{z}/{x}/{y}.png' />

<ReactLeafletSearch
ref={ref => this.mapSearchRef = ref}
mapStateModifier={(latLng) => {

// Do work with result latitude, longitude
console.log('Search Latitude:', latLng.lat);
console.log('Search Longitude:', latLng.lng);

if (this.mapRef) {
// Because we have a custom mapStateModifier callback,
// search component won't flyTo coordinates
// so we need to do it using our refs
this.mapRef.contextValue.map.flyTo(
latLng,
this.mapSearchRef.props.zoom,
this.mapSearchRef.props.zoomPanOptions
);
}
}}
position="topright"
showPopup={false}
provider="OpenStreetMap"
showMarker={true}
openSearchOnLoad={true}
closeResultsOnClick={true}
providerOptions={{ region: "np" }}
/>
</Map>
</div>
);
}

您可以查看此示例Stackblitz看看它的工作原理。

关于reactjs - 如何在 react 中使用 map 作为位置输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60340828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com