Как проверить, что мое местоположение находится в полигоне или в определенной области в React Native, используя React Native Maps?

Я также отображаю местоположение через сервер и полигон.

Когда пользователь выходит за пределы полигона, он выдает какое-то сообщение.

<MapView
         style={styles.map}
         toolbarEnabled={true}
         region={{
           latitude:this.state.lat,
           longitude: this.state.long,
           latitudeDelta: 0.015,
           longitudeDelta: 0.0121,
         }}
         rotateEnabled={true}
         provider={this.props.provider}
         onPress={e => this.onPress(e)}
         {...mapOptions}
         animateToCoordinate={[this.state.initialPosition, 500]}
       >
         {this.state.polygons.map(polygon => (
           <Polygon
             key={polygon.id}
             coordinates={polygon.coordinates}
             holes={polygon.holes}
             strokeColor="#F00"
             fillColor="rgba(255,0,0,0.5)"
             strokeWidth={2}
           />
         ))}
         {this.state.editing && (
           <Polygon
             key={this.state.editing.id}
             coordinates={this.state.editing.coordinates}
             holes={this.state.editing.holes}
             strokeColor="#000"
             fillColor="rgba(255,0,0,0.5)"
             strokeWidth={2}
           />
         )}
         <Marker coordinate={{
          latitude:this.state.lat,
          longitude: this.state.long}} >
       </Marker>
       </MapView>

Я использую:

  • реактивный родной: 0.47.1
  • реагирующие родные карты: 0.20.1

person chetan godiya    schedule 18.06.2018    source источник
comment
Какие сообщения об ошибках выдаются?   -  person Capricorn    schedule 18.06.2018
comment
прямо сейчас ничего не покажет мне нужно решение или способ достижения моей цели ЛЮБАЯ БИБЛИОТЕКА ДЛЯ ЭТОГО   -  person chetan godiya    schedule 18.06.2018


Ответы (1)


используйте https://github.com/surialabs/react-native-geo-fencing библиотека для контрольной точки в полигоне

componentDidMount() {
  const polygon = [
    { lat: 3.1336599385978805, lng: 101.31866455078125 },
    { lat: 3.3091633559540123, lng: 101.66198730468757 },
    { lat: 3.091150714460597,  lng: 101.92977905273438 },
    { lat: 3.1336599385978805, lng: 101.31866455078125 } // last point has to be same as first point
  ];

  let point = {
    lat: 2.951269758090068,
    lng: 101.964111328125
  };

  GeoFencing.containsLocation(point, polygon)
    .then(() => console.log('point is within polygon'))
    .catch(() => console.log('point is NOT within polygon'))
}

передайте данные полигона в массив полигонов и маркер в точке.. он покажет вам.. точку в полигоне или нет

person Yash Vaghela    schedule 18.06.2018
comment
это действительно помогает мне, спасибо за ваш ответ. крутая работа!! @YashVaghela - person Narendra Chouhan; 27.06.2019
comment
Вы уверены? Это работает для вас? @NarendraChouhan - person Yash Vaghela; 27.06.2019
comment
есть ли способ проверить по названию местоположения, а не по полигону - person TheEhsanSarshar; 01.02.2020
comment
Да, возможно, вам нужно получить длинную длину имени вашего местоположения ... а затем найти его с помощью этой библиотеки - person Yash Vaghela; 02.02.2020