2016-08-24 74 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

現在標記爲正確的答案,因爲....它的工作原理:-) 根據多邊形大小設置標記大小還是您給它一個靜態大小? –