如何在React Native中的Google Maps上实现可拖动的,可调整大小的多边形?

时间:2018-08-20 20:46:26

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

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

Google Maps API文档具有clear example的特征,可以使用纯JavaScript拖动(但不能调整大小)多边形。但是,由于将直接的Google Maps集成到React中似乎并不起作用,因此我正在使用react-native-maps。似乎多边形的可拖动属性在那里不可用。 marker是可拖动的,我想可以根据标记的新位置重新渲染多边形,但是 1)标记拖动很慢,因此必须向下按标记在它升起之前大约一秒钟,并且 2)不会很流畅。这就是拖动标记的样子(请注意,我尚未对多边形重新渲染进行编码):

enter image description here

它很笨重-您通常必须按几次才能真正拿起标记。动画很慢。而且,如果您尚未关闭mapv​​iew滚动功能(我已经这样做了,但是它需要在生产中启用),那么您经常会最终滚动地图而不是移动标记。

我知道我想要的是可能,因为我经常使用的应用程序执行类似的操作。见下文:

enter image description here

该应用程序显然正在使用Google Maps,尽管我无法验证它是否在使用React Native。如何获得相同的流动性和易用性?

编辑1:考虑到浪费时间的动画marker似乎是硬编码的,我很确定,成功解决我的问题根本不会使用markers 。另一个应用程序的工作示例似乎也没有使用它们。

值得注意的是,如果我将onPress= { (e) => console.log(e.nativeEvent.coordinate) }添加到MapView组件中,则无论我在地图上的什么位置单击,都可以获得即时的纬度/经度控制台日志。这些点应该可以存储在定义多边形形状的对象中。然后,问题就变成了1)如何流畅地重新渲染多边形(以及仅多边形),以及2)MapView API的功能不包括当您不使用{{ 1}}。

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

1 个答案:

答案 0 :(得分:1)

希望这对您有帮助:

关于该主题的一个封闭问题似乎可以解决。

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

您的示例和建议使我想知道您是否应该仅使可拖动标记不可见,而是较大并且在多边形的角上。