为什么 Leaflet 在 React 中平移和缩放速度这么慢?

2024-06-11

我有一个相当简单的应用程序,使用 leaflet.js 渲染大约 3000 个点。它渲染得相当快,但平移和缩放非常慢。

看看chrome中的性能工具,看起来大部分时间都花在了重新计算样式上,但这并没有什么帮助。

      <LeafletMap
        center={[50, 10]}
        zoom={6}
        maxZoom={10}
        preferCanvas={true}
      >
        <TileLayer
          url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
        />
        {this.state.locations.map( (location, index) => {
            return (
              <Marker position={[location.latitude, location.longitude]}>
                <Popup>
                  Popup for any custom information.
                </Popup>
              </Marker> 
            )
        })}
    </LeafletMap>

我遇到了同样的问题,发生这种情况是因为每次缩放时它都会重新渲染所有标记,并且还需要浏览器内存来绘制标记。因此,随着标记数量的增加,您的地图将会变慢。

所以,我用过https://github.com/manubb/Leaflet.PixiOverlay https://github.com/manubb/Leaflet.PixiOverlay,速度非常快,因为它在浏览器中的 HTML Canvas 中呈现。 我们也有可用的反应版本 -https://www.npmjs.com/package/react-leaflet-pixi-overlay https://www.npmjs.com/package/react-leaflet-pixi-overlay

你也可以尝试同样的方法。

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

为什么 Leaflet 在 React 中平移和缩放速度这么慢? 的相关文章

随机推荐

  • linux + ksh + 向下舍入或向上舍入 - 浮点数

    在我的 ksh 脚本中 我只需要计算整数 有时我会得到浮点数 例如 3 49 或 4 8 等 所以我需要根据以下规则将浮点数转换为整数 示例 3 49 will be 3 2 9 will be 3 4 1 will be 4 23 51
  • 根据值列表对 XSLT 中的 XML 进行排序

    我想使用 XSL 转换对一个 XML 文件进行排序
  • 使用jquery,下拉列表选择更改时如何重定向?

    我有一个下拉列表 如果有人选择一个选项 我想根据选择重定向到另一个页面 我怎样才能通过 jquery 做到这一点 将逻辑绑定到 change 事件 并从中获取当前值 val 以确定用户应该被重定向到哪里 此示例假设位置直接存储在值本身中 m
  • 如何在 Windows 和 Python 2.7 上模拟 os.path.samefile 行为?

    给定两个路径 我必须比较它们是否指向同一个文件 在 Unix 中 这可以通过以下方式完成os path samefile 但正如文档所述 它在 Windows 中不可用 模拟此功能的最佳方法是什么 它不需要模拟常见情况 就我而言 有以下简化
  • system.web.http.HttpError 的.Net 标准/核心版本

    从 net Framework 迁移到 net Standard Core 时 我遇到了 HttpError 类 除了兼容性垫片之外 我在 net core standard 中找不到任何等效项 这只是一个临时解决方案 不知道官方有没有替代
  • SQL链接服务器查询非常非常慢

    我正在通过链接服务器从视图中提取大量数据 我使用的是 SQL Server 2012 链接服务器是 SQL Server 2008 我的选择语句是 SELECT INTO MY LOCAL TABLE FROM SELECT FROM LI
  • 来自外部 DLL 的未处理的 DivideByZero 异常 - C#

    我有一个 C net 4 0 程序 其主要功能是从外部 FTP 库 项目引用的 dll 调用方法 逻辑位于 try catch 块中 catch 会打印错误 异常处理程序有一个通用参数 catch Exception ex IDE是VS 有
  • 这是重载,不同类中具有相同名称和不同签名的方法吗?

    如果我有以下 Java 代码 class A public int add int a int b return a b class B extends A public float add float a float b return a
  • Prism 应用程序中的数据模型位于何处?

    我无法将数据模型放置在 Prism 应用程序中的何处 大多数 如果不是全部 数据将来自网络服务 并且每个模块的网络服务都是唯一的 不幸的是 有些对象需要共享 例如人员 用户对象 我真的很困惑是否将这些服务直接添加到模块中 以便每个服务真正独
  • Java 更改包名称大小写约定的原因

    就在你说这是重复的之前 我已经看到了其他问题 但我仍然想发布这个 所以我在读用 Java 思考 Bruce Eckel这段话是关于小写命名约定的 Java 1 0 和 Java 1 1 中的域扩展com edu org net等 按照惯例都
  • 如何在 Java 中从任意基数转换为基数 10

    我是 Java 新手 我想编写一个程序 仅使用算术运算将基数 2 3 4 5 6 7 8 9 16 转换为基数 10 我已经完成了从键盘读取字符串 如果数字是十六进制 并将其转换为整数 之后我做了一个 while 循环 将数字分割为数字并将
  • 如何从c调用Java函数

    我被这个问题困扰了 我需要从 c c 调用 Java 函数 在示例和教程中 我只看到一个java应用程序调用一个c方法 并在同一个方法中调用另一个java方法 但我想做的是从代码的任何部分调用java方法 这就是我所拥有的 static J
  • Boost Hana 实现自定义序列

    我面临着一种情况 我通常会通过继承来创建自定义类boost hana tuple 例如 通过使用以下代码 template
  • Xamarin - 未找到类(Android 支持库)

    我正在尝试使用 AppCompat 实现具有向后兼容性的 Material Design 继tutorial https blog xamarin com android tips hello material design v7 appc
  • 如何使用修订号而不是 GUID(在 TeamCity 中)标记我的构建?

    我正在尝试与 TeamCity 进行 持续集成 我想以增量方式标记我的构建 而 VCS 提供的 GUID 不如简单递增的数字那么有用 我希望该数字与 Mercurial 中的修订版数字实际匹配 我的情况 水银信息 我希望将构建标记为 0 0
  • 将 NSTabViewItem 的副本从 NSTabView 添加到同一个 NSTabView

    我正在创建一个简单的网络浏览器 并希望实现选项卡 为此 我使用NSTabView 我基本上希望每个选项卡都有一个WebView这将显示网站已加载 我从只有一个选项卡开始 并希望在创建新选项卡时添加第一个选项卡的精确副本 我尝试过类似的东西t
  • 如何获取和比较libcurl版本?

    我正在使用 libcurl 设置 OAuth 2 0 访问令牌 自 libcurl 7 33 起CURLcode curl easy setopt CURL handle CURLOPT XOAUTH2 BEARER char token
  • 为什么这个递归连接会产生:数据太长

    我在 MySQL 8 上有这个表 create table tbl id varchar 2 val int insert into tbl values A 1 B 2 C 3 D 4 E 5 以下查询应找出哪些记录集的值之和不大于 6
  • 如何消除页面边缘的间隙?

    我已经将主体和两个 div 的边框 内边距和边距设置为 0px 但我似乎仍然无法摆脱差距 body padding 0px border 0px margin 0px width 100 height 100vh mainPage heig
  • 为什么 Leaflet 在 React 中平移和缩放速度这么慢?

    我有一个相当简单的应用程序 使用 leaflet js 渲染大约 3000 个点 它渲染得相当快 但平移和缩放非常慢 看看chrome中的性能工具 看起来大部分时间都花在了重新计算样式上 但这并没有什么帮助