将 React-Leaflet V3.1.0 与 Express 服务器一起使用。
我的用户要求能够使用以下格式的链接:
https://www.mymap.com/id/:category/:id/:zoom
这会向服务器发送一个请求,以获取它们链接到的标记的纬度/经度坐标,然后将起始位置设置为这些坐标。我已经设法使用 React Router Dom 使这部分工作。现在理想情况下,我希望能够在地图加载时打开这个特定标记的弹出窗口。通过我设置查询组件的方式,能够在生成标记以指示这是感兴趣的标记时通过道具传递布尔值不是问题,我只是不确定如何激活弹出窗口。
我不太熟悉 useRef 以及如何准确地使用它来访问不同的 Leaflet 方法,但我昨天做了一些实验,并且能够获得一些似乎是朝着正确方向迈出的行为。弹出窗口在初始启动时没有加载,但是当我在地图上导航时,其他弹出窗口开始自动打开。话虽如此,我的地图渲染了数千个标记,并且每个标记超过 1 个渲染不值得权衡这个相对利基的功能,除非第二次渲染可以仅隔离到感兴趣的标记。
我认为可以让我到达我想要的地方但我无法让这个特定的方法触发: https ://leafletjs.com/reference-1.6.0.html#popup-openon
我最终使用了openPopup()
类似于此链接:
https ://stackblitz.com/edit/react-awtgn6?file=Map.js
但是我只能通过 useEffect + useRef 来实现(上面提到的结果)。
在将弹出窗口打开状态存储为状态时,我觉得我遗漏了一些明显的东西?
基本代码示例:
<Marker
position={[item.lat, item.lon]}
icon={getIcon(item)}
>
<Popup position={[item.lat, item.lon]}>
<PopupContent
item={item}
userSettings={userSettings}
/>
</Popup>
</Marker>
谢谢!