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