【问题标题】:How do I implement a draggable, resizable polygon on Google Maps in React Native?如何在 React Native 中的 Google 地图上实现可拖动、可调整大小的多边形?
【发布时间】:2019-01-27 00:39:19
【问题描述】:

我正在用 React Native 创建一个应用程序。该应用程序的一部分是由多边形表示的地理围栏,我希望用户能够用手指轻松拖动多边形并调整其大小。

Google Maps API 文档提供 clear example 使用纯 JavaScript 拖动(但不调整大小)多边形的功能。但是,由于直接将 Google 地图集成到 React 中似乎并没有真正起作用,我使用的是react-native-maps。似乎多边形的可拖动属性在那里不可用。 marker 可以拖动,我大概可以根据标记的新位置重新渲染多边形,但是 1) 标记拖动很慢,需要按下标记一秒钟或所以在它升起之前,并且 2) 重新渲染不会是流畅的。这是拖动标记的样子(请注意我还没有编码多边形重新渲染):

它很笨重——您通常必须按几次才能真正拿起标记。动画很慢。如果你没有关闭地图视图滚动(我有,但它需要在生产中打开),你经常会滚动地图而不是移动标记。

我知道我想要的是可能,因为我经常使用的应用程序会做类似的事情。见下文:

这个应用程序显然使用的是 Google 地图,尽管我无法验证它使用的是 React Native。我怎样才能达到同样的流动性和易用性?

编辑 1:鉴于拾取和放下 marker 的浪费时间的动画似乎是硬编码的,我相当肯定我的问题的成功解决方案根本不会使用 markers。另一个应用程序的工作示例似乎也没有使用它们。

值得注意的是,如果我将onPress= { (e) => console.log(e.nativeEvent.coordinate) } 添加到 MapView 组件,无论我在哪里点击地图,我都会获得纬度/经度的即时控制台日志。应该可以将这些点存储在定义多边形形状的对象中。那么问题就变成了 1)如何流畅地重新渲染多边形(并且只有多边形),以及 2)MapView API 没有在您不使用marker 时在按下时连续触发的事件。

另一方面,API确实具有一个事件 onMarkerDrag,在拖动 marker 时会连续触发。

【问题讨论】:

  • 不知道为什么有人对你投了反对票并投票结束,因为这是一个完美的书面问题,带有奖金截图!这个社区已经不是以前的样子了!
  • 当反对票附有解释要克服的缺陷的评论时,它肯定会更有用。
  • @223seneca - 如果您找到了一个最佳解决方案,我很想知道自己正在寻求实现非常相似的东西。
  • @223seneca 以下有什么结果吗?
  • @223seneca 你上面提到的应用是什么?

标签: ios google-maps react-native geofencing react-native-maps


【解决方案1】:

希望对您有所帮助:

那里有一个关于此主题的已关闭问题,似乎可行。

https://github.com/react-community/react-native-maps/issues/1685

您的示例和建议让我想知道您是否应该让可拖动标记不可见但很大并且位于多边形的角上。

【讨论】:

  • 我以前看过。 OP 发布的代码使用内置的可拖动标记,与我上面的示例相同。我相当确定我的问题的成功解决方案根本不会使用内置标记,所以我正在编辑我的问题以包含它。话虽如此,隐形和大标记值得一试,所以我会试一试。
猜你喜欢
  • 1970-01-01
  • 2019-10-10
  • 2021-06-19
  • 2017-06-17
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 2021-11-24
相关资源
最近更新 更多