2016-08-24 11 views
2

私はreact-native-mapsを使用しています。マップ上にポリゴンをレンダリングしています。react-native-maps - polygon onPressイベント

私の問題は、AFAIK反応ネイティブマップポリゴンにはonPressイベントがないことです。

また、それぞれのPolygonをTouchableコンポーネントでラップすることも考えましたが、問題は(AFAIK ...)リアクションネイティブマップのオーバーレイはMapViewコンポーネントの直接の子でなければなりませんレンダリングしません...

これを行うにはどんな方法がありますか?

ありがとう!
ウリ

答えて

1

[OK]を、より良いソリューションのこの質問に従ってくださいよ、私はhttps://github.com/airbnb/react-native-maps/issues/488からこの答えを得ました。

アイデアはそうのようなMapViewコンポーネントにonPressイベントを追加することです:

<MapView onPress={ this.mapPressed }> 

次に、(double配列が目的であり、それは機能が動作する方法です)あなたが行うことができます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

私は今日、このに取り組んでいたし、今の私の問題を回避するには、割り当てられたonPress小道具を持っていた、同じ座標上の別のMapView.Markerコンポーネントを配置することです。

ポリゴンまたは他の同様の動作と一致させるように努力する必要があります。

私は:)とにかく

+0

ありがとうございます!私はそれを試してみましょう。ユーザーがマーカーの正確な座標に触れる前にマーカーを使用しないでください。 –

+0

さて、はい、しかし、私はユーザーが触れるように私は妥当なサイズを指定し、実際には何も視覚的にレンダリングしないカスタムマーカーを使用しました。 – Felipe92

+0

あなたの答えは今のところ正しいと書いてあります。それは動作します:-) ポリゴンのサイズに応じてマーカーのサイズを設定する良い方法はありますか、それとも静的なサイズですか? –

関連する問題