如何飞往react-leaflet中的某个位置

2024-03-03

所以我对反应和传单真的很陌生,但我想做的基本上就是让用户输入一些输入,然后按回车键后,触发一个事件,然后该事件飞到从该输入生成的坐标。我正在使用地理编码,经纬度坐标已成功生成。但是我不知道如何使地图飞到那个位置。这是我到目前为止所拥有的:

import './App.css';
import * as React from "react";
import { ChakraProvider } from "@chakra-ui/react";
import { MapContainer, TileLayer, Marker, Popup, useMapEvents } from 'react-leaflet'
import 'leaflet/dist/leaflet.css'
import Geocode from "react-geocode";
import SearchBar from './SearchBar';

class App extends React.Component {
  constructor(props){
    super(props)
    this.state = {
      position: [43.653225, -79.383186]
    }
  }
  mapRef = React.createRef();

  changePos (pos) {
    this.setState({position: pos});
    this.mapRef.current.flyTo(pos);
  }

  render () {
    return (
      <ChakraProvider resetCSS = {false}>
        <div className = "App">
          <div id="title">
            <h1>
              CovidStopSpots
            </h1>
              <p>A responsive tracker for Covid-19.</p>
          <SearchBar changePos = {this.changePos.bind(this)}></SearchBar>
          </div>
          <div id="map">
            <MapContainer center={this.state.position} zoom={13} scrollWheelZoom={false} ref={this.mapRef}>
              <TileLayer
                attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
                url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
              />
              <Marker position={[43.653225, -79.383186]}>
                <Popup>
                  A pretty CSS3 popup. <br /> Easily customizable.
                </Popup>
              </Marker>
            </MapContainer>
          </div>
      </div>
      </ChakraProvider>
    )
  }
}

export default App;

当前的代码也会生成此错误:

Unhandled Rejection (TypeError): Cannot read property 'flyTo' of null

在react-leaflet版本3中,您可以使用以下命令获取地图实例whenCreatedprop,然后当您不想将其用于某个组件时,使用它飞到另一个位置MapContainer's child.

this.state = {
      position: [43.653225, -79.383186],
      map: null
 }

删除引用并使用whenCreated prop

<MapContainer center={this.state.position} zoom={13} scrollWheelZoom={false} whenCreated={map => this.setState({ map })}>

然后在你的changePos事件中使用this.state.map来飞行

 changePos (pos) {
    this.setState({position: pos});
    const {map} = this.state;
    if (map) map.flyTo(pos);
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何飞往react-leaflet中的某个位置 的相关文章

随机推荐

  • 在 WebGL 中与 HTML 背景混合

    我正在将平面颜色和纹理绘制到 WebGL 画布中 我的颜色和纹理具有不同的 alpha 值 我希望它们能够正确混合 我想要透明背景 它们应该与画布下的 HTML 内容混合 在 WebGL 中 我使用 gl clearColor 0 0 0
  • memcpy 是否保留不同类型之间的数据?

    是否打电话memcpy如果缓冲区大小足够 在两个不同的结构上保留原始数据 如果它们各自的数据类型重叠 它是否被定义为用先前数据类型的数据检索另一种数据类型的值 对于两种 c cpp 语言来说 这应该是相似的 但我在 cpp 中提供了一个示例
  • POST 后重新加载浏览器窗口,而不提示用户重新发送 POST 数据

    当用户访问我的网站时 每个页面上都会有一个 登录 链接 单击此按钮会使用一些 JavaScript 来显示一个覆盖窗口 系统会在其中提示用户输入其凭据 输入这些凭据后 将向 Web 服务器发出 Ajax 调用以验证它们 如果它们有效 则会发
  • ggplot,左侧反转 y 轴上有点,第二轴上有条形图

    我试图根据用户的选择以不同的方式生成一个带有两个垂直轴的 ggplot 一个选择允许用户反转每个轴 另一种选择允许他们在每个轴上的系列的点和条之间进行选择 当主 左侧 y 轴反转并且辅助 右侧 数据设置为显示为条形时 我遇到了问题 在这种情
  • 为什么 require.main.require.resolve 未定义?

    问题 在 Node js 模块的范围内有一个module对象本来就是对当前模块的引用 a require功能意味着需要模块 and a require resolve功能意味着查找模块的位置 但不加载模块 而是返回解析的文件名 如果有一个m
  • 什么是 django.utils.function.__proxy__ 对象以及它有什么帮助?

    我偶然发现了一个django utils functional proxy 对象多次 最后一次在以下代码中 def formfield for choice field self db field request kwargs print
  • 在android模拟器上运行apk

    我想在 Android 模拟器上运行 APK 我按照以下步骤操作 将apk复制到platform tools目录 以管理员身份运行cmd exe 导航到平台工具目录 从 AVD 管理器运行模拟器 在命令行中输入 adb devices 它在
  • Magento:西班牙语中的小数价格显示点而不是逗号

    我有多语言商店 默认语言是英语 很少有产品有小数价格 当我将语言切换为西班牙语时 十进制价格中出现逗号而不是点 例如 价格 英语 1 35 当我将语言切换为西班牙语时 价格将如下所示 价格 1 35 我真的想删除这个 需要 怎么做 您可以尝
  • Laravel:“users”数据库表中的“remember_token”是什么?

    使用是否安全remember token在用户表中用于验证用户进入应用程序 这个令牌的目的是什么 目前 我在表单中使用它来检查用户是否已登录 如果令牌不存在 我将显示登录屏幕 每次用户注销时 都会重新生成此令牌 不 它不应该用于身份验证 框
  • RMI 何时建立 TCP 连接?

    我有一个测试程序T which 获取一个存根Remote来自服务器上 RMI 注册表的对象 OS 在数百个并行线程中 调用该对象上的方法O 我可以看到该服务器S有许多 RMI TCP 连接 线程 我原以为只有一个 因为只有一个存根O on
  • PHP header() 和 exit() 会在重定向之前安全地终止脚本吗?

    以下是保护仅限用户区域的安全方法吗 if isset SESSION username redirect SITE ROOT st pages login using function redirect url header Locatio
  • 在 bash 中循环文本文件的每一行

    文本如下所示 428 http www youtube com watch v aqlJl1LfDP4 NEW YORK NEW YORK FRANK SINATRA YouTube moc ebutuoy www 1 0 0 20 96
  • 获取 - LMC 指令的执行周期

    我必须为每个小人计算机指令 ADD SUB BR BRP 等 定义步骤 并且我在分支指令和 COB 或停止指令 方面遇到问题 我理解每条指令开头的获取部分 电脑 gt 三月 多重耐药 gt 红外 但我不确定在执行部分添加什么才能使指令真正正
  • 在 Jenkins 中发布 Karma 单元测试

    Jenkins http jenkins ci org 已经构建了我的 Maven Java 项目 我想要的结果karma http karma runner github io 单元测试显示在 Jenkins 中 但不幸的是我无法在 Je
  • 在未安装 Qt 的计算机上运行 Qt 应用程序。 QCamera 没有看到可用的设备

    我正在开发一个网络 GUI 应用程序 在另一台未安装 Qt 的计算机上测试应用程序 但是当我启动应用程序时 QCamera 可用设备 http qt project org doc qt 5 0 qtmultimedia qcamera h
  • GridView 中的随机图像

    我想知道 GridView 中是否有随机图像 下面的代码对我来说效果很好 但启动活动时 GridView 中的图像不是随机的 我应该修改以下代码以使其随机 Layout
  • 如何使用sorted-map-by按值对地图进行排序?

    我根本无法理解文档 我想要一个排序的地图 xxx 它根据值对地图进行排序 我怎么做 Thanks 另一种方法是在比较器函数中比较原始映射的值 def my map chad 3 bob 5 sammy 4 sort by keys asce
  • Play 应用程序中使用的 SBT 覆盖范围“排除”

    我在 Play 应用程序中使用了 sbt scoverage 我使用以下配置来排除反向和路由生成的文件 coverageExcludedPackages Reverse Routes 但是 这只能排除生成的 Reverse scala 文件
  • kubectl 推出状态后获取新 pod 名称之一 | kubectl get pods --field-selector 返回终止 pod

    问题是在部署新部署后 kubectl apply f deployment yml 假设使用一个副本进行部署 Kubernetes 将创建第二个 pod 并关闭前一个 pod 到目前为止一切正常 但是在 kubectl apply 之后 我
  • 如何飞往react-leaflet中的某个位置

    所以我对反应和传单真的很陌生 但我想做的基本上就是让用户输入一些输入 然后按回车键后 触发一个事件 然后该事件飞到从该输入生成的坐标 我正在使用地理编码 经纬度坐标已成功生成 但是我不知道如何使地图飞到那个位置 这是我到目前为止所拥有的 i