2016-08-24 45 views
2

我正在使用react-native-maps,并且在我的地图上渲染了多边形,我希望它是可压缩的。react-native-maps - 多边形onPress事件

我的问题是,AFAIK react-native-maps多边形没有onPress事件。

我也想过用可触摸组件包装每个多边形,但是接下来我的问题是(同样,AFAIK ...),react-native-maps中的叠加必须是MapView组件的直接子对象,否则它们将不会呈现...

任何方式来获取此工作?

谢谢!
乌里

回答

1

好了,我从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 
} 


} 
0

我工作这在今天和我现在的解决方法是放在同一坐标单独MapView.Marker组件,它确实有一个onPress道具分配。

您必须努力使其与多边形或其他类似的行为相匹配。

我会按照更好的解决方案这个问题,反正:)

+0

谢谢!我会试一试。在用户触摸标记的确切坐标之前不使用标记? –

+0

嗯,是的,但我使用了一个自定义标记,我指定了一个合理的大小,以便用户触摸,并且不会直观地呈现任何东西。 – Felipe92

+0

现在标记为正确的答案,因为....它的工作原理:-) 根据多边形大小设置标记大小还是您给它一个静态大小? –