react-google-maps:如何使用 fitBounds、panBy、panTo、panToBounds 公共 API?

2024-04-03

根据反应谷歌地图库 https://github.com/tomchentw/react-google-maps/blob/master/src/lib/GoogleMap.js#L125-L131,您可以从 ref 对象调用这四个方法。

看起来奇怪的是,这些方法应该接收两个参数,一个地图实例和其他参数,如下所示:

fitBounds(map, args) { return map.fitBounds(...args); }

但是,当以这种方式调用 fitBounds() 时,地图上不会发生任何事情,不会更改边界,也不会引发错误。这是我构造组件的方式,在 componentDidUpdate 中调用 fitBounds:

import React from 'react'
import { withGoogleMap, GoogleMap, InfoWindow, Marker, OverlayView } from 'react-google-maps'
import InfoBox from 'react-google-maps/lib/addons/InfoBox'
import map from 'lodash/map'

// Higher-Order Component
const AllocatedPlacesMap = withGoogleMap(props => (
  <GoogleMap
    center={props.center}
    defaultZoom={4}
    options={{ scrollwheel: false, minZoom: 3, maxZoom: 15 }}
    onCenterChanged={props.onCenterChanged}
    ref={props.onMapMounted}>
    {props.markers.map((marker, index) => (
      <Marker
        key={index}
        position={marker.position}
      />
    ))}
  </GoogleMap>
));

class Map extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
    };
  }

  getCenter = () => {
    this._bounds = new google.maps.LatLngBounds();

    this.props.markers.forEach((marker, index) => {
      const position = new google.maps.LatLng(marker.lat, marker.lng);
      this._bounds.extend(position);
    });

    return this._bounds.getCenter();
  }

  componentDidUpdate() {
    this._map.fitBounds(this._map, this._bounds);
  }

  handleMapMounted = (map) => {
    this._map = map;
  }

  render() {
    return (
      <div className="allocated-places">
        <AllocatedPlacesMap
          containerElement={
            <div style={{ height: `100%` }} />
          }
          mapElement={
            <div style={{ height: `100%` }} />
          }
          center={this.getCenter()}
          markers={props.markers}
          onMapMounted={this.handleMapMounted}
        />
      </div>
    )
  }
}

export default Map;

知道在这种情况下调用 fitBounds() 的正确方法是什么吗?这方面似乎缺乏文档和示例。


查看函数定义fitBounds(map, args) { return map.fitBounds(...args); }我们可以看到扩展运算符 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator应用于 args。这表明args应该是一个数组。

因此,在您的代码中,第二个参数应该是数组类型:

this._map.fitBounds(this._map, [this._bounds]);

您还可以包含数组的第二个元素,该元素将转换为第二个可选参数padding地图 JavaScript API 的fitBound() https://developers.google.com/maps/documentation/javascript/reference#Map method.

this._map.fitBounds(this._map, [this._bounds, 100]);

希望这可以帮助!

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

react-google-maps:如何使用 fitBounds、panBy、panTo、panToBounds 公共 API? 的相关文章

  • Jwt 签名和前端登录身份验证

    我有这个特殊的 jwt sign 函数 Backend const token jwt sign id user id process env TOKEN SECRET expiresIn 1m res header auth token
  • 如何映射轮播的子项数组?

    我正在尝试将 Carousel 组件包装在映射对象数组周围作为组件的子级 目前我只能让映射创建映射对象的 1 个子对象 轮播需要像这样
  • 没有 Props 的 TypeScript React State

    我想利用 TypeScript 中的静态和强类型 但仅限于状态 因为我不打算采用任何道具 当我尝试传递接口时 最终出现错误 import as React from react import Link from react router d
  • 使用 Reactjs 获取滚动位置

    我使用reactjs并想要处理滚动click event 首先 我呈现了帖子列表componentDidMount 其次 通过click event在列表中的每个帖子上 它将显示帖子详细信息并滚动到顶部 因为我将帖子详细信息放在页面的顶部位
  • 从旧的外部 Javascript 更改 React 组件的状态?

    如何从旧的 jQuery soup 中更改 React 组件的状态 代码 我有一个这样的组件 var AComponent React createClass getInitialState function return ids rend
  • 使用 mongoose 通过 React 应用程序将图像上传到 mongodb 数据库

    我正在为找到的对象创建一个反应应用程序 我想允许用户上传这些对象的照片 我尝试使用 axios 通过 post 请求将图像发送到猫鼬服务器 但它不起作用 这就是我如何将图像存储在带有预览的 React 组件中 handleImage eve
  • ReactJS - Redux Form - 如何根据单选字段元素有条件地显示/隐藏元素?

    我对 Redux 比较陌生 我有一个表单 其中有一些无线电输入 是 或 否 基本上 我想根据该无线电输入选择有条件地显示包含另一个 redux 表单字段的另一个元素 有直接的方法可以做到这一点吗 我想检查一下formProps site v
  • 在react-admin中通过REST API进行基于cookie的身份验证

    我是反应管理新手 我已经阅读了 stackoverflow 中的所有问题 也用谷歌搜索了我的问题 但没有找到任何有用的解决方案 我正在设置 React admin 来替换我的一个项目的现有管理页面 我通过 REST API 使用基于 coo
  • 使 Material UI Grid 项目的子项拉伸以适合父容器的剩余高度

    1 现状 我有一个包含 4 个网格项的 Material UI 网格容器 每个 Grid 项中都有一个 Typography 组件 其中包含标题和包含一些内容的 Card 如下所示 2 期望的外观 我希望卡片填充网格项目的剩余高度并且不超过
  • ReactCSSTransitionGroup 组件WillLeave 未调用

    我尝试使用 ReactCssTransition 但不知何故该事件没有被调用 componentWillLeave 这是我的组件 import React Component from react import TransitionGrou
  • 使用 React.forwardRef 与自定义 ref prop 的价值

    我看到React forwardRef从反应文档来看 似乎是将引用传递给子功能组件的认可方式 const FancyButton React forwardRef props ref gt
  • 我实现了检查用户权限的方法,即使我在颤振中收到错误消息“MissingPluginException”?

    我实现了方法检查权限状态即使我收到一条错误消息 未处理的异常 MissingPluginException 在通道 flutter baseflow com permissions methods 上找不到方法 checkPermissio
  • 将 firestore 中的数据分配给变量

    我尝试使用 get doc 函数将 firestore 数据库中的变量分配给它们所尊重的值 我注意到它不会分配或更新这些值 我尝试使用异步和等待 但似乎无法使其工作 getFromDatabase nameOfCollection name
  • React onSubmit e.preventDefault() 有时不起作用 + Axios

    现在我在 React 中面临这个奇怪的问题 其中带有 e preventDefault 的 onSubmit 函数有时会避免刷新页面 有时则不会 我创建了两个挂钩来跟踪上传的文件及其进度条 const uploadedFiles setUp
  • React - 检查元素在 DOM 中是否可见

    我正在构建一个表单 用户需要回答一系列问题 单选按钮 然后才能进入下一个屏幕 对于字段验证 我使用 yup npm 包 和 redux 作为状态管理 对于一种特定场景 组合 会显示一个新屏幕 div 要求用户进行确认 复选框 然后用户才能继
  • ant-d upload中如何为removeFile添加PopConfirm一个图片文件

    我正在使用 Ant d Upload 通过本地系统上传文件 然后单击文件预览图像上的删除图标 图像文件将被删除 我想添加一个弹出确认 所以我尝试在 onRemovefunction 中添加确认作为承诺但它不起作用 它在浏览器中显示警报 on
  • 使react-leaflet能够离线使用

    我一直在使用反应传单 https github com PaulLeCam react leaflet图书馆 到目前为止运作良好 现在我希望网站预加载尽可能多的图块 以便网络应用程序 也是 PWA 可以在没有互联网的情况下使用 我找到了一些
  • 如何将React版本17降级到16?

    由于 React 17 不支持许多 React 包 如何将 React 版本从 17 降级到 16 假设您使用 npm yarn 或其他节点包管理器 依赖项版本列在package json 搜索react and react dom包下de
  • 如何获取使用 .map 渲染的第一个元素的 ref?

    我需要在几行中显示视频 卡片 的缩略图 并重点关注第一个缩略图 我使用嵌套地图进行了显示 该代码基本上迭代视频数组并返回多行视频 我们如何关注第一个渲染的元素 我认为我们需要获得第一个要聚焦的元素的引用 但是我们如何在这里设置 ref 并在
  • React Native - 跨屏幕传递数据

    我遇到了一些麻烦react native应用程序 我不知道如何跨屏幕传递数据 我意识到还有其他类似的问题在 SO 上得到了回答 但是这些解决方案对我来说不起作用 我正在使用StackNavigator 这是我的设置App js file e

随机推荐

  • MySQL - 如何自动执行视图查询,从最近日期到前一天减去指标并为最新数据添加日期戳

    我有一个每日 API 调用 它为我提供唯一 ID 的 LIFETIME 数据 并在每天午夜为数据批次添加日期标记 该数据被附加到 MySQL 中的数据库中 但我需要以一种可以获取每个指标的唯一 ID 的每日数据的方式对其进行转换 我在 My
  • 可串行读隔离级别和可重复读隔离级别有什么区别?

    可串行读隔离级别和可重复读隔离级别有什么区别 谁能举个简单的例子 Summary 在可重复读隔离级别中 可以将新行插入到数据集中 在可序列化隔离级别中 所有行在事务期间都被锁定 不允许插入 更新或删除 请参阅这些示例和解释 Original
  • NLTK 下载 SSL:证书验证失败

    尝试为 nltk 安装 Punkt 时出现以下错误 nltk download punkt nltk data Error loading Punkt
  • 在java中提取.gz文件

    我正在尝试用 java 解压缩一些 gz 文件 经过一些研究我写了这个方法 public static void gunzipIt String name byte buffer new byte 1024 try GZIPInputStr
  • 推荐使用 gcc 构建 C++ 的 -W 标志

    我正在寻找 C 的推荐 g 警告选项列表 只能找到这个 推荐的 C 语言 gcc 警告选项 https stackoverflow com questions 154630 recommended gcc warning options f
  • 如何在 Yii2 中禁用会话、cookie 和自动登录?

    我正在 Yii2 中构建无状态 Restful API 因此 我在高级应用程序布局中创建了新的应用程序 Yii2 创建者的首选 并配置了所有必要的内容和 API 工作 现在我想让它成为无状态 我想禁用会话并且我希望它能够在config ma
  • 你可以合法地将dynamic_cast转换为多态类的非多态基类吗

    In 这个答案 https stackoverflow com a 44329645 1277769 出现了以下场景 include
  • time.struct_time 的 structseq() 错误

    这是给出错误的 python 脚本 gt gt gt import time gt gt gt t gt gt gt t append time struct time tm year 2000 tm mon 11 tm mday 30 t
  • 重命名后如何获取应用名称?

    在应用程序运行时更改可执行文件名称后 GetModuleFileName and GetModuleFileNameEx使用PID返回原始文件名 如何获取新文件名甚至检测更改 理想情况下我不想使用FindFirstChangeNotific
  • 如何在 MySQL 中有效地选择随机记录?

    mysql gt EXPLAIN SELECT FROM urls ORDER BY RAND LIMIT 1 id select type table type possible keys key key len ref rows Ext
  • Firebase 事件无延迟

    使用是一个好主意吗Firebase 事件 https www firebase com docs web api query on htmlapi 在客户端之间实时同步某些内容 例如 如果我想在客户端上完全同时播放视频 延迟小于 30 毫秒
  • 系统托盘中的 JavaFX 应用程序

    我正在使用 JavaFX UI 制作一个简单的应用程序 该应用程序只需执行以下操作 有一个系统托盘图标 单击时显示一个窗口 再次单击时隐藏它 右键单击时显示一个带有 1 个 退出 项的菜单 我已经制作了 UI 并将应用程序放入系统托盘中 但
  • Android 在按钮单击时显示数字键盘

    在我的应用程序中 我试图在用户单击按钮时显示数字键盘 单击按钮时 我使用 requestFocus 将焦点转移到布局中的 EditText 接下来我需要显示数字键盘 以便用户可以输入值 这些值始终是数字 因此我只需要显示数字键盘 我厌倦了在
  • 登录销售导航器 python selenium

    我正在尝试实现登录销售导航页面的简单任务 之后我可以继续尝试抓取潜在客户和帐户数据 作为抓取练习 按照此link https www linkedin com sales login为了登录 我有这个脚本来完成任务 browser webd
  • 使用 XmlCipher (RSA) 加密 XML 文件

    我只需要使用公钥加密一些 XML 元素 我成功地可以将此代码与 simetric 算法 XMLCipher AES 128 一起使用 但在尝试使用 XMLCipher RSA v1dot5 时失败 这就是代码 import java sec
  • FileReference.save() AS3 上锁定文件类型的替代方案

    Update 正如下面 Jacob 的回复中所讨论的 限制或纠正 FileReference save 的行为是不可能的 谁能建议一个替代方案 服务器是 Apache PHP 它符合我在这篇文章中的所有标准 并避免我与 Jacob 讨论的陷
  • iOS Prefix.pch 最佳实践

    我见过许多开发人员将各种方便的宏添加到他们的 iOS 项目的 Prefix pch 中 您建议在 iOS Prefix pch 文件中添加 或不添加 什么内容 你的 Prefix pch 是什么样的 Ewww 不要将宏放入 pch 文件中
  • ACTION_POWER_CONNECTED 的问题

    我在应用程序中使用以下示例页面中的代码来监控设备何时连接 断开与电源适配器的连接 http developer android com training monitoring device state battery monitoring
  • 如何在第二台显示器上打开form2?

    我从 Form1 创建 Form2 我希望 Form2 在第二台显示器上打开 我怎样才能做到这一点 我使用这段代码 private void button1 Click object sender EventArgs e Form2 dlg
  • react-google-maps:如何使用 fitBounds、panBy、panTo、panToBounds 公共 API?

    根据反应谷歌地图库 https github com tomchentw react google maps blob master src lib GoogleMap js L125 L131 您可以从 ref 对象调用这四个方法 看起来