单击React Leaflet v.3.x中的标记时,如何动态更改地图缩放?

匿名

我试图找到许多与此有关的东西,但我无法使其正常工作。我要的是单击标记图时使该位置居中并获得完全缩放。例如,我在Unites各州周围总共有23个标记,初始地图缩放为4。我要的是,如果用户单击地图中的标记,然后地图中心更改为该标记lat,lng,并假设放大比例从4放大到14标记已经渲染,我不希望在函数MyMapComponent中渲染标记。它来自API数据。没有线索怎么做。我尝试过useMapEvents,但它适用于地图单击而不是标记单击,如果我使用标记eventHandlers单击,则无法调用地图useMapEvents来设置纬度,经度和更改缩放。

这是我的代码:

function MyMapComponent() {
const map = useMapEvents({
    click: () => {
        let data = {lat: 46.8835319, lng: -114.0348327}
        map.flyTo(data, 18)
    }
})  
return null}

上面的代码是我需要更改地图中心和缩放

<div className="project-view-section">
                <MapContainer bounds={outerBounds} center={[37.2755, -104.6571]} zoom={mapOptions.zoom} scrollWheelZoom={false}>
                    <MyMapComponent />
                    <LayersControl position="topright">
                        <LayersControl.BaseLayer checked name="Mapbox Satellite">
                            <TileLayer
                                url={'https://api.mapbox.com/styles/v1/mapbox/satellite-v9/tiles/256/{z}/{x}/{y}@2x?access_token='+MAPBOX_TOKEN}
                                attribution="Map data &copy; <a href=&quot;https://www.mapbox.com/&quot;>Mapbox</a>"
                            />
                        </LayersControl.BaseLayer>
                        <LayersControl.BaseLayer name="Mapbox Streets">
                            <TileLayer
                                url={'https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/256/{z}/{x}/{y}@2x?access_token='+MAPBOX_TOKEN}
                                attribution="Map data &copy; <a href=&quot;https://www.mapbox.com/&quot;>Mapbox</a>"
                            />
                        </LayersControl.BaseLayer>
                    </LayersControl>
                    <MarkerClusterGroup>
                    {   
                        
                            state.markersData.map((element, index) =>
                                <Marker 
                                    key={index} 
                                    marker_index={index} 
                                    position={element} 
                                    icon={icon} 
                                    eventHandlers={{click: () => {test()},}}>
                                </Marker>
                            )
                        
                    }
                    </MarkerClusterGroup>

                </MapContainer>
            </div>

有什么办法可以做到这一点?

kboul

您应该eventHandlers在Marker上使用prop并监听click事件。然后使用本机传单的代码:map.setView(coords, zoom)

function Markers({ data }) {
  const map = useMap();
  return (
    data.length > 0 &&
    data.map((marker, index) => {
      return (
        <Marker
          eventHandlers={{
            click: () => {
              map.setView(
                [
                  marker.geometry.coordinates[1],
                  marker.geometry.coordinates[0]
                ],
                14
              );
            }
          }}
          key={index}
          position={{
            lat: marker.geometry.coordinates[1], // your api structure
            lng: marker.geometry.coordinates[0] // your api structure
          }}
          icon={icon}
        >
          <Popup>
            <span>{marker.properties.label}</span>
          </Popup>
        </Marker>
      );
    })
  );
}

然后将Markers comp用作MapContainer子级。

带有免费API的演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击标记时不显示react-leaflet Popup

来自分类Dev

Google Maps API v3-单击标记时如何“提示”标记ID

来自分类Dev

Google Maps API v3-单击标记时如何“提示”标记ID

来自分类Dev

在 GMaps API v3 中拖动标记时如何防止地图平移

来自分类Dev

在地图上使用angular-leaflet-directive右键单击标记时如何创建上下文菜单

来自分类Dev

如何使用Leaflet map更改单击时的群集缩放级别?

来自分类Dev

自v2.0.0起如何将props传递给React Leaflet.markercluster选项?

来自分类Dev

单击地图时添加新标记(OpenStreetMap、Leaflet JS)

来自分类Dev

React-Leaflet:如何收听LayersControl.Overlay复选框单击事件?

来自分类Dev

React-leaflet:如何更新标记位置?

来自分类Dev

如何在react-leaflet中动态移动和旋转标记?

来自分类Dev

React-leaflet:默认标记在缩放时移动

来自分类Dev

React Leaflet:无法加载源地图

来自分类Dev

React&Leaflet:找不到地图容器

来自分类Dev

React Leaflet-标记图像无法加载

来自分类Dev

React Leaflet-标记图像无法加载

来自分类Dev

Android Google Map V2:如何在单击另一个标记时更改先前单击的标记的图标

来自分类Dev

Android Google Map V2:如何在单击另一个标记时更改先前单击的标记的图标

来自分类Dev

React Leaflet:动态标记,无法读取属性“ addLayer”

来自分类Dev

在Leaflet中,如何仅在单击每个瓷砖时加载它们?

来自分类Dev

单击地图时防止 Leaflet .flyTo() 动画停止

来自分类Dev

React-leaflet如何重置样式

来自分类Dev

使用d3和Leaflet实现动画缩放

来自分类Dev

如何使用react + redux获取传单v3中的地图属性和事件?

来自分类Dev

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

来自分类Dev

在传单中单击标记时不生成地图单击事件

来自分类Dev

v3打破地图图块示例中的D3缩放行为更改

来自分类Dev

Ionic v3 - 单击时如何更改按钮的“颜色”属性

来自分类Dev

如何从谷歌地图v3删除标记?

Related 相关文章

  1. 1

    单击标记时不显示react-leaflet Popup

  2. 2

    Google Maps API v3-单击标记时如何“提示”标记ID

  3. 3

    Google Maps API v3-单击标记时如何“提示”标记ID

  4. 4

    在 GMaps API v3 中拖动标记时如何防止地图平移

  5. 5

    在地图上使用angular-leaflet-directive右键单击标记时如何创建上下文菜单

  6. 6

    如何使用Leaflet map更改单击时的群集缩放级别?

  7. 7

    自v2.0.0起如何将props传递给React Leaflet.markercluster选项?

  8. 8

    单击地图时添加新标记(OpenStreetMap、Leaflet JS)

  9. 9

    React-Leaflet:如何收听LayersControl.Overlay复选框单击事件?

  10. 10

    React-leaflet:如何更新标记位置?

  11. 11

    如何在react-leaflet中动态移动和旋转标记?

  12. 12

    React-leaflet:默认标记在缩放时移动

  13. 13

    React Leaflet:无法加载源地图

  14. 14

    React&Leaflet:找不到地图容器

  15. 15

    React Leaflet-标记图像无法加载

  16. 16

    React Leaflet-标记图像无法加载

  17. 17

    Android Google Map V2:如何在单击另一个标记时更改先前单击的标记的图标

  18. 18

    Android Google Map V2:如何在单击另一个标记时更改先前单击的标记的图标

  19. 19

    React Leaflet:动态标记,无法读取属性“ addLayer”

  20. 20

    在Leaflet中,如何仅在单击每个瓷砖时加载它们?

  21. 21

    单击地图时防止 Leaflet .flyTo() 动画停止

  22. 22

    React-leaflet如何重置样式

  23. 23

    使用d3和Leaflet实现动画缩放

  24. 24

    如何使用react + redux获取传单v3中的地图属性和事件?

  25. 25

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

  26. 26

    在传单中单击标记时不生成地图单击事件

  27. 27

    v3打破地图图块示例中的D3缩放行为更改

  28. 28

    Ionic v3 - 单击时如何更改按钮的“颜色”属性

  29. 29

    如何从谷歌地图v3删除标记?

热门标签

归档