我正在使用react-native-maps,并且在我的地图上渲染了多边形,我希望它是可压缩的。react-native-maps - 多边形onPress事件
我的问题是,AFAIK react-native-maps多边形没有onPress事件。
我也想过用可触摸组件包装每个多边形,但是接下来我的问题是(同样,AFAIK ...),react-native-maps中的叠加必须是MapView组件的直接子对象,否则它们将不会呈现...
任何方式来获取此工作?
谢谢!
乌里
我正在使用react-native-maps,并且在我的地图上渲染了多边形,我希望它是可压缩的。react-native-maps - 多边形onPress事件
我的问题是,AFAIK react-native-maps多边形没有onPress事件。
我也想过用可触摸组件包装每个多边形,但是接下来我的问题是(同样,AFAIK ...),react-native-maps中的叠加必须是MapView组件的直接子对象,否则它们将不会呈现...
任何方式来获取此工作?
谢谢!
乌里
好了,我从https://github.com/airbnb/react-native-maps/issues/488得到这个答案。
的想法是一个onPress
事件添加到MapView
组件,像这样:
<MapView onPress={ this.mapPressed }>
然后,使用geojson-js-utils你可以做(双阵列是有目的的,这就是功能的工作方式):
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
}
}
我工作这在今天和我现在的解决方法是放在同一坐标单独MapView.Marker
组件,它确实有一个onPress
道具分配。
您必须努力使其与多边形或其他类似的行为相匹配。
我会按照更好的解决方案这个问题,反正:)
谢谢!我会试一试。在用户触摸标记的确切坐标之前不使用标记? –
嗯,是的,但我使用了一个自定义标记,我指定了一个合理的大小,以便用户触摸,并且不会直观地呈现任何东西。 – Felipe92
现在标记为正确的答案,因为....它的工作原理:-) 根据多边形大小设置标记大小还是您给它一个静态大小? –