1. <tfoot id='bx9dE'></tfoot>
  2. <small id='bx9dE'></small><noframes id='bx9dE'>

    <legend id='bx9dE'><style id='bx9dE'><dir id='bx9dE'><q id='bx9dE'></q></dir></style></legend>
        <bdo id='bx9dE'></bdo><ul id='bx9dE'></ul>
      <i id='bx9dE'><tr id='bx9dE'><dt id='bx9dE'><q id='bx9dE'><span id='bx9dE'><b id='bx9dE'><form id='bx9dE'><ins id='bx9dE'></ins><ul id='bx9dE'></ul><sub id='bx9dE'></sub></form><legend id='bx9dE'></legend><bdo id='bx9dE'><pre id='bx9dE'><center id='bx9dE'></center></pre></bdo></b><th id='bx9dE'></th></span></q></dt></tr></i><div id='bx9dE'><tfoot id='bx9dE'></tfoot><dl id='bx9dE'><fieldset id='bx9dE'></fieldset></dl></div>

      Leaflet React在功能组件中获取地图实例

      时间:2023-08-08

        <tfoot id='a56nK'></tfoot>

          <tbody id='a56nK'></tbody>

        <legend id='a56nK'><style id='a56nK'><dir id='a56nK'><q id='a56nK'></q></dir></style></legend>
          • <bdo id='a56nK'></bdo><ul id='a56nK'></ul>

                <small id='a56nK'></small><noframes id='a56nK'>

                <i id='a56nK'><tr id='a56nK'><dt id='a56nK'><q id='a56nK'><span id='a56nK'><b id='a56nK'><form id='a56nK'><ins id='a56nK'></ins><ul id='a56nK'></ul><sub id='a56nK'></sub></form><legend id='a56nK'></legend><bdo id='a56nK'><pre id='a56nK'><center id='a56nK'></center></pre></bdo></b><th id='a56nK'></th></span></q></dt></tr></i><div id='a56nK'><tfoot id='a56nK'></tfoot><dl id='a56nK'><fieldset id='a56nK'></fieldset></dl></div>

                本文介绍了Leaflet React在功能组件中获取地图实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                我想在地图外有一个按钮,可以将视图更改为另一个坐标.

                I want to have a button outside the map that changes the view to another coordinates.

                有没有办法让 mapContainer 实例调用它们的函数?或者我该如何实现这个功能?

                Is there any way to get mapContainer instance to call their functions? Or how can I implement that function?

                我试图通过使用 ref 来获取它,但它不起作用.这是我当前的代码

                I tried to get it by using ref, but it's not working. Here is my current code

                const zoom = 13;
                
                function Map({ regionCoord, regionName }) {
                
                    const mapRef = useRef();
                
                    function handleFlyToClick() {
                      // This don't work
                      // const map = mapRef.current.leafletElement 
                      // map.flyTo(regionCoord, zoom)
                    }
                
                 return (   
                        <React.Fragment>
                            <Grid container >
                                <Grid item xs={10}>
                                    {regionCoord && <MapContainer
                                        ref={mapRef}                     
                                        center={[50,50]} 
                                        zoom={zoom}                    
                                        >
                                        <TileLayer
                                            attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
                                            url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
                                        />            
                   
                                        <Marker position={regionCoord}>
                                          <Popup>{regionName}</Popup>
                                        </Marker>        
                                    </MapContainer>}                               
                                </Grid>
                                <Grid item xs={2}>
                                    <button onClick={handleFlyToClick}>Fly To</button>
                                </Grid>
                            </Grid>
                        </React.Fragment>  
                    )
                    
                }
                
                export default Map
                

                我正在使用 react-leaflet v3

                I'm using react-leaflet v3

                推荐答案

                你需要使用一个包含你的按钮的组件.要获取地图实例,请使用 MapContainerwhenCreated 属性.我认为 mapRef 在最新版本中不再有效.

                You need to use a component which will include your button inside. To take the map instance use whenCreated prop of MapContainer. I think mapRef is not valid anymore with the latest version.

                地图容器:

                 const [map, setMap] = useState(null);
                
                 <MapContainer
                      center={[50, 50]}
                      zoom={zoom}
                      style={{ height: "90vh" }}
                      whenCreated={setMap}
                  >
                ...
                
                </MapContainer>
                <FlyToButton />  // use the button here outside of the MapContainer
                
                ....
                

                使用按钮及其事件创建组件

                Create the component with the button and its event

                function FlyToButton() {
                  const onClick = () => map.flyTo(regionCoord, zoom);
                    
                  return <button onClick={onClick}>Add marker on click</button>;
                }
                

                演示

                这篇关于Leaflet React在功能组件中获取地图实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:传单 js:将 POI 绘制为画布 下一篇:mapbox/传单上的聚类标记

                相关文章

                最新文章

                • <bdo id='JKrEC'></bdo><ul id='JKrEC'></ul>
                1. <i id='JKrEC'><tr id='JKrEC'><dt id='JKrEC'><q id='JKrEC'><span id='JKrEC'><b id='JKrEC'><form id='JKrEC'><ins id='JKrEC'></ins><ul id='JKrEC'></ul><sub id='JKrEC'></sub></form><legend id='JKrEC'></legend><bdo id='JKrEC'><pre id='JKrEC'><center id='JKrEC'></center></pre></bdo></b><th id='JKrEC'></th></span></q></dt></tr></i><div id='JKrEC'><tfoot id='JKrEC'></tfoot><dl id='JKrEC'><fieldset id='JKrEC'></fieldset></dl></div>

                  <small id='JKrEC'></small><noframes id='JKrEC'>

                    <legend id='JKrEC'><style id='JKrEC'><dir id='JKrEC'><q id='JKrEC'></q></dir></style></legend>
                    <tfoot id='JKrEC'></tfoot>