React native 反应本机贴图-多边形onPress事件
我正在使用react native maps,并在地图上渲染我希望可按的多边形 我的问题是AFAIK react native maps Polygon没有onPress事件 我还考虑过用一个可触摸组件包装每个多边形,但我的问题是(再说一遍,AFAIK…),react原生贴图中的覆盖必须是MapView组件的直接子对象,否则它们不会渲染 有什么办法让它工作吗 谢谢React native 反应本机贴图-多边形onPress事件,react-native,maps,polygon,React Native,Maps,Polygon,我正在使用react native maps,并在地图上渲染我希望可按的多边形 我的问题是AFAIK react native maps Polygon没有onPress事件 我还考虑过用一个可触摸组件包装每个多边形,但我的问题是(再说一遍,AFAIK…),react原生贴图中的覆盖必须是MapView组件的直接子对象,否则它们不会渲染 有什么办法让它工作吗 谢谢 Uri我今天正在做这件事,现在我的解决方法是在同一坐标上放置一个单独的MapView.Marker组件,它确实分配了一个onPres
Uri我今天正在做这件事,现在我的解决方法是在同一坐标上放置一个单独的
MapView.Marker
组件,它确实分配了一个onPress
道具
您必须努力使其与多边形或其他类似行为相匹配
不管怎样,我都会按照这个问题来寻找更好的解决方案:)好的,所以我从中得到了这个答案 想法是向
MapView
组件添加onPress
事件,如下所示:
<MapView onPress={ this.mapPressed }>
现在多边形上有一个onPress事件 参考:
this.onPress('foo')}
/>
谢谢!我试试看。使用记号笔不会让用户触摸记号笔的精确坐标吗?是的,但我使用了一个自定义记号笔,我为它指定了一个合理的大小,以便用户触摸,并且不会真正以视觉方式呈现任何内容。现在将您的答案标记为正确,如。。。。工作原理:-)你有没有根据多边形大小设置标记大小的好方法,或者你给了它一个静态大小?是的,这更像是一个丑陋的解决方法。不,我最终设置了一个静态大小,因为在我的例子中,整个多边形是可触摸的并不重要。事实上,我使用了一个需要去那里的图像。但您至少可以使用其他标记近似多边形的布局。祝你好运!我找到了一个更好的答案
import { pointInPolygon } from 'geojson-utils';
mapPressed(event) {
const pointCoords = [event.nativeEvent.coordinate.longitude,
event.nativeEvent.coordinate.latitude];
const polygonCoords = [ [lngA, latA], [lngB, latB] ... etc... ];
const inPolygon = pointInPolygon(
{ 'type': 'Point', 'coordinates': pointCoords },
{ 'type': 'Polygon', 'coordinates': [plotCoords] }
);
if (inPolygon) {
// do something
}
}
<Polygon
coordinates={this.props.coordinates}
strokeColor="rgba(0, 0, 0, 1)"
strokeWidth={3}
tappable={true}
onPress={() => this.onPress('foo')}
/>