如何在反应传单中使用带有动态标记的边界

2024-04-07

我有以下功能反应组件,它可以在“边界”框中正确显示两个静态标记,该框适合两个标记。

我希望能够传递一系列纬度和经度值以供地图显示,但我不知道如何做到这一点。

这是工作的静态示例:

import React from 'react'
import { MapContainer, TileLayer, Marker } from 'react-leaflet'
import L from 'leaflet'
import 'leaflet/dist/leaflet.css'

const MapLeaflet = () => {

// STATIC MARKER POSITIONS
const position = [42.2974279, -85.628292];
const position2 = [-8.852507, -45.351563];

// BOUNDS CODE
const bounds = L.latLngBounds([position, position2]);

return (
    <MapContainer
        className=" map"
        center={position}
        bounds={bounds}
    >
        <Marker key={key} position={position}>
            <Heart/>
        </Marker>
        <Marker key={key} position={position2}>
            <Heart/>
        </Marker>

        <TileLayer
            attribution='&amp;copy <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
            url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
        />
    </MapContainer>
        
)
}

如果我传递 is {coords} 我就可以动态显示标记:

const MapLeaflet = ({coors}) => {
...
    { coords && coords.map(coord => (
           <Marker key={key} latitude={coord[0]} longitude={coord[1]}>
                <SomeMarker/>
           </Marker>
    ))}
...
}

但显然,地图尚未将这些“坐标”考虑到边界。传入的coords数组的console.log输出如下:

0: (2) [51.52167056034225, -0.12894469488176763]
1: (2) [46.58635156377568, 2.1796793230151184]
2: (2) [40.819721, 14.341111]

不知何故,我需要以代码接受的格式将以下行替换为对传入坐标的引用,但我不知道该怎么做。

const bounds = L.latLngBounds([position, position2]);

类似的东西

const bounds = L.latLngBounds({coords});

任何帮助将非常感激。

亲切的问候,马特


我想我明白你想要实现的目标。

maxBounds 在react-leaflet v.3 中是不可变的,因此您需要创建一个自定义组件,该组件将在坐标更改时更改地图边界。它将以坐标为道具,当坐标改变或游戏着陆时,它会改变地图边界。

function Bounds({ coords }) {
  const map = useMap();
  useEffect(() => {
    if (!map) return;

    map.fitBounds(coords);
  }, [map, coords]);
  return null;
}

在您的应用程序组件中,我包含了边界更改(坐标变量)并且地图边界相应更改的情况。希望这就是您正在寻找的。

function App() {
  const [coords, setCoords] = useState([
    [51.52167056034225, -0.12894469488176763],
    [46.58635156377568, 2.1796793230151184],
    [40.819721, 14.341111]
  ]);

  return (
    <>
      <MapLeaflet coords={coords} />
      <button
        onClick={() =>
          setCoords([
            [52.52167056034225, -0.12894469488176763],
            [47.58635156377568, 2.1796793230151184],
            [41.819721, 14.341111]
          ])
        }
      >
        Change coords
      </button>
    </>
  );
}

Demo https://codesandbox.io/s/how-to-use-bounds-with-dynamic-markers-in-react-leaflet-v3x-g6vim?file=/src/App.js:112-636

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

如何在反应传单中使用带有动态标记的边界 的相关文章

  • Android 设备上的 PhoneGap 蓝牙插件

    我一直在尝试让 PhoneGap 工作的蓝牙插件 但我似乎不知道哪里出了问题 首先 我的测试设备是 Galaxy S3 GT 19305T 应用程序是使用PhoneGap CLI http docs phonegap com en 3 0
  • 从数据 URI 解码 QR 码

    我尝试从数据 uri 中解码二维码 var dataUri data image gif base64 R0lGODdh9gD2AIAAAAAAAP ywAAAAA9gD2AAAC decodeQrCode dataUri cb 我已经尝试
  • 每 3 秒重复一次动画

    我正在使用 WOW js 和 animate css 现在我正在将 CSS 运行到 Infinite 我想知道如何让我的课程运行 3 秒停止并再次开始到无限 My html img src images fork png class for
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • 解析“流”JSON

    我在浏览器中有一个网格 我想通过 JSON 将数据行发送到网格 但浏览器应该在接收到 JSON 时不断解析它 并在解析时将行添加到网格中 换句话说 在接收到整个 JSON 对象后 不应将行全部添加到网格中 应该在接收到行时将其添加到网格中
  • 如何重置使用 JavaScript 更改的 CSS 属性?

    我的导航按钮的宽度从 100px 增加到 150px 当鼠标悬停在 nav li hover width 150px 但是使用 javascript 我已经做到了 无论选择哪个选项 宽度都将继续为 150px 当选择每个选项时 它会使其他选
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • Meteor:应用程序无法在 0.9.1.1 版本上运行

    出现类似错误 Error TypeError undefined is not a function evaluating Template create anonymous function iron dynamic template j
  • 使用 Angular 下载具有动态 src 的脚本

    Angular 提供了通过动态名称动态加载模板的方法ng include 该部分中的内联 JS 和 CSS 可以正常加载 但没有一个好的方法来下载带有动态 url 的脚本 我们需要下载脚本 相对于调用它们的 html 部分的路径 即我们有一
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • JavaScript 重定向到新窗口

    我有以下代码 它根据下拉列表的值重定向到页面 我如何使其在新窗口中打开 function goto form var index form select selectedIndex if form select options index
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 通过 CDN 使用 Dojo 时如何加载自定义 AMD 模块?

    我正在使用 google 的 CDN 并尝试使用他们的加载程序加载我自己的 AMD 模块 我知道我做错了什么 但我被困住了 有任何想法吗
  • Babel 7 Jest Core JS“TypeError:wks不是函数”

    将我的项目升级到 Babel 7 后 通过 Jest 运行测试会抛出以下错误 测试在 Babel 6 中运行没有任何问题 但在 Babel 7 中失败并出现以下错误 TypeError wks is not a function at Ob
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • 为 illustrator 导出脚本以保存为 web jpg

    任何人都可以帮我为 illustrator CC2017 编写一个脚本 将文件以 JPG 格式导出到网络 旧版 然后保存文件并关闭 我有 700 个文件 每个文件有 2 个画板 单击 文件 gt 导出 gt 另存为 Web 旧版 然后右键文
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • Javascript 纪元时间(以天为单位)

    我需要以天为单位的纪元时间 迄今为止 我已经看到过有关如何翻译它的帖子 但几天后就没有了 我对纪元时间很不好 我怎么能得到这个 我需要以天为单位的纪元时间 我将解释为您想要自纪元以来的天数 纪元本身是第 0 天 或第 1 天的开始 无论您如

随机推荐

  • getDrawingCache 未更新

    我在 onDraw 函数中调用 getDrawingCache 问题是它仅在第一次包含对画布的更改 此后 它根本不会随着新更改而更新 这是我的代码 paintAction draw canvas if paintAction isPerma
  • SLF4J 最佳实践

    我正在编写一个库 并使用 sfl4j 来处理日志记录 我认为只要每个机构都可以提供自己的实现 那么我的应用程序提供的日志将得到正确处理 这是个好主意 但我不知道是否必须提供实现作为传递依赖项 示例 如果我只提供
  • ListView 的 EditItemTemplate 内的 AsyncFileUpload

    我在处理时遇到问题AsyncFileUpload控制在一个EditItemTemplate in a ListView 我如何引用AsyncFileUpload处理时控制OnUploadedComplete代码隐藏文件中的事件 我知道我可以
  • 电源查询循环

    我使用 Power Query 提取了过去一个月测试的所有独特项目类型 let Source Sql Database XXX YYY dbo tblTest Source Schema dbo Item tblTest Data Filt
  • OSX 中有类似 UIActivityViewController 的东西吗?

    我正在将应用程序从 iOS 迁移到 OSX OSX 中是否有与 UIActivityViewController 等效的东西 对于 Facebook Twitter 邮件 消息共享之类的东西 我需要做类似的事情 NSArray activi
  • FCM - 获取消息标签

    要从 FCM 后端发送消息 我们有以下视图 我想得到消息标签 消息诽谤 from RemoteMessage 当我调试该字段时 消息中的内容被标记为google c a c l 我认为这是一个内部字段 首先 我只是想知道和你的问题一样 但读
  • inputFormatter 应该只允许小数和负数

    我想允许用户只添加数字 12345 和十进制数字 如 21321 12312 和负数 如 23423 32432 用户不应该能够添加多个 比如 12 32 并在第一个输入中添加 比如 324 34 而不是324 4323 我用了这个正则表达
  • 如何重置 Azure 上的 Kudu 缓存部署

    我之前在 Azure Web App 上有一个 Node 应用程序 现在是一个 Go 应用程序 问题是当我部署时我从 Kudu 得到这个 Using cached version of deployment script command a
  • Android AdMob SDK - 请求新广告返回相同的广告

    我在主活动中有一个 AdView 其 requestInterval 设置为 推荐 20 秒 问题是广告似乎永远不会改变 我知道当我在 AdListener 上收到对 onReceiveRefreshedAd 的回调时 就会发生刷新 此外
  • Android 在我自己的应用程序中以编程方式隐藏鼠标指针

    我知道这里有一个类似的问题 以编程方式在 Android 屏幕上移动鼠标指针 https stackoverflow com questions 7695258 moving mouse pointer on android screen
  • Firebase - 缺少 Api 密钥

    我正在使用 Google 的 Firebase 数据库 我已经注册到 Firebase 控制台并下载了 JSON 文件 但由于某种原因它给了我这种错误 错误 任务 app processDebugGoogleServices 执行失败 缺少
  • apns Sharp 中的 iPhone 证书错误 对 SSPI 的调用失败

    我有一个托管在 azure 中的数据服务 我从该服务向 iphone 发送通知 但在与 apns 建立连接时出现以下错误 对 SSPI 的调用失败 收到的消息是意外的或格式错误 我还参考了以下链接来解决相同的错误 但仍然收到错误 苹果通过
  • Grails JSON 数组

    我正在将 Foo 对象列表转换为 JSON 字符串 我需要将 JSON 字符串解析回 Foos 列表 但是在下面的示例中 解析为我提供了 JSONObjects 列表而不是 Foos Example List list new Foo fi
  • Delphi TListBox OnClick / OnChange?

    使用 TListBox 获得 OnChange 类型的功能是否有技巧 我可以对组件进行子类化并添加属性等 然后仅在索引更改时执行 OnClick 代码 我还可以使用表单级别变量来破解它以存储当前索引 但只是想知道我是否忽略了之前明显的内容我
  • 如何反向应用隐藏?

    我在 git stash 中保存了一个小补丁 我已将其应用到我的工作副本中git stash apply 现在 我想通过反向应用补丁来取消这些更改 有点像git revert会做但反对藏匿 有谁知道如何做到这一点 澄清 我的工作副本还有其他
  • 用力触摸后选择菜单项时未调用选择器

    我有这段代码 用于响应用力触摸后点击的菜单项 class InterfaceController WKInterfaceController override init super init self addMenuItemWithItem
  • 如何更改 Bootstrap 的 typeahead 选择行为

    使用 Twitter Bootstrap 中的预输入功能时 example http twitter github com bootstrap javascript html typeahead 当我按 TAB 和按 ENTER 时 第一个
  • 使用 Angular.js 创建表

    我正在尝试使用 Angular js 创建一个表 该表的单元格跨越多行 Example http jsfiddle net famedriver kDrc6 http jsfiddle net famedriver kDrc6 示例数据 v
  • Python:清除日志文件

    我开发了一个客户端服务器应用程序并且我已经登录服务器 所以我使用logging模块 我想在服务器中创建一个命令来清除文件 我有测试os remove 但之后 日志不起作用 你有好主意吗 Thanks 截断文件而不是删除它可能会更好 最简单的
  • 如何在反应传单中使用带有动态标记的边界

    我有以下功能反应组件 它可以在 边界 框中正确显示两个静态标记 该框适合两个标记 我希望能够传递一系列纬度和经度值以供地图显示 但我不知道如何做到这一点 这是工作的静态示例 import React from react import Ma