Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 反应本机贴图-多边形onPress事件_React Native_Maps_Polygon - Fatal编程技术网

React native 反应本机贴图-多边形onPress事件

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

我正在使用react native maps,并在地图上渲染我希望可按的多边形

我的问题是AFAIK react native maps Polygon没有onPress事件

我还考虑过用一个可触摸组件包装每个多边形,但我的问题是(再说一遍,AFAIK…),react原生贴图中的覆盖必须是MapView组件的直接子对象,否则它们不会渲染

有什么办法让它工作吗

谢谢

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')}
/>