我正在React Native中创建一个应用程序。该应用程序的一部分是用多边形表示的地理围栏,我希望用户能够轻松地用手指拖动和调整多边形的大小。
Google Maps API文档具有clear example的特征,可以使用纯JavaScript拖动(但不能调整大小)多边形。但是,由于将直接的Google Maps集成到React中似乎并不起作用,因此我正在使用react-native-maps。似乎多边形的可拖动属性在那里不可用。 marker
是可拖动的,我想可以根据标记的新位置重新渲染多边形,但是 1)标记拖动很慢,因此必须向下按标记在它升起之前大约一秒钟,并且 2)不会很流畅。这就是拖动标记的样子(请注意,我尚未对多边形重新渲染进行编码):
它很笨重-您通常必须按几次才能真正拿起标记。动画很慢。而且,如果您尚未关闭mapview滚动功能(我已经这样做了,但是它需要在生产中启用),那么您经常会最终滚动地图而不是移动标记。
我知道我想要的是可能,因为我经常使用的应用程序执行类似的操作。见下文:
该应用程序显然正在使用Google Maps,尽管我无法验证它是否在使用React Native。如何获得相同的流动性和易用性?
编辑1:考虑到浪费时间的动画marker
似乎是硬编码的,我很确定,成功解决我的问题根本不会使用markers
。另一个应用程序的工作示例似乎也没有使用它们。
值得注意的是,如果我将onPress= { (e) => console.log(e.nativeEvent.coordinate) }
添加到MapView组件中,则无论我在地图上的什么位置单击,都可以获得即时的纬度/经度控制台日志。这些点应该可以存储在定义多边形形状的对象中。然后,问题就变成了1)如何流畅地重新渲染多边形(以及仅多边形),以及2)MapView API的功能不包括当您不使用{{ 1}}。
另一方面,API 确实具有事件marker
,该事件在拖动onMarkerDrag
时会连续触发。
答案 0 :(得分:1)
希望这对您有帮助:
关于该主题的一个封闭问题似乎可以解决。
https://github.com/react-community/react-native-maps/issues/1685
您的示例和建议使我想知道您是否应该仅使可拖动标记不可见,而是较大并且在多边形的角上。