如何在React Native中将onPress事件映射到单个svg对象上

How to map onPress events on single svg object in React Native?

本文关键字:映射 单个 svg 对象 事件 onPress React Native 中将      更新时间:2023-09-26

我目前正在使用React Native为我的大学论文开发一个移动应用程序。我希望创建类似的交互式地图,例如在这里http://smudgeproof.net/siggraph.html,你有一个建筑物内部的地图,你可以点击每个房间,带来一个新的窗口,其中有一些关于该房间的额外信息。

我应该能够在特定的网站上创建这个地图,然后在上面提到的功能显示它。我在考虑用SVG来处理这些东西。

我能够在屏幕上绘制svg地图,使用目前可用的第三方库来绘制svg,如https://github.com/aksonov/react-native-svg-elements不幸的是,这些库中没有一个支持每个svg元素的onpress事件,能够在房间单击时显示描述屏幕。

我还应该补充一点,房间可能有很多不同的形状,所以它不只是矩形,这使得它无法仅使用元素构建地图。

我很感激任何帮助,或者如果你们能想出不同的解决方案来处理这个问题,我熟悉Javascript,但没有在objective-c中为iOS做过任何应用程序,所以我不确定写一个自定义模块来处理这个有多难。

谢谢!

UPDATE:以防有人试图解决类似的问题,我最终通过WebView显示这些svg,并通过注入JavaScript处理每个对象上的'press'事件。无论如何,感谢所有的帮助!:)

react-native-sgv库现在提供对onPress()事件的支持。示例如下:https://github.com/react-native-community/react-native-svg

如果你想将onClick事件附加到一组元素上,你可以使用svg库的Symbol组件将一组元素链接在一起,并将onPress事件附加到任何元素上,这将应用于整个Symbol

你试过@react-native-mapbox-gl/maps吗??

这是一个处理SVG地图的非常好的包。

https://www.npmjs.com/package/@react-native-mapbox-gl地图