Есть ли какой-либо способ, которым я могу перейти к маркеру с параметрами с другой страницы (React-Native)?

#javascript #react-native #parameters #navigation #marker

#javascript #react-native #параметры #навигация #маркер

Вопрос:

У меня есть список с маркерами на странице, и я хочу перейти к маркеру на карте, когда я нажимаю на кнопку.

Это краткая версия list.js:

 export default class List extends Component {

    render() {

        const markerOneLocation = {
            latitude: 52.587374, 
            longitude: 5.137634,
            latitudeDelta: 0.3,
            longitudeDelta: 0.3,
       };

       const showMarkerOne = () => {
           this.props.navigation.navigate('Map', 
           {initialLocation: markerOneLocation});
       }; 

       return (
           <Text onPress={this.toggle}>
              <Text style={{fontSize: 15}} onPress= 
              {showMarkerOne} title='Marker1'> Marker 1 </Text>
           </Text>
       )
   }
}
 

Это краткая версия map.js:

    export default class Map extends Component {

       render() {
           return(
              <MapView
                style={{height: '100%', width: '100%'}}
                provider={PROVIDER_GOOGLE}
                region={{
                    latitude: 52.100748,
                    longitude: 5.646090,
                    latitudeDelta: 4,
                    longitudeDelta: 4,
                }}
              >
                <Marker
                  coordinate={{
                    latitude: 52.474772,
                    longitude: 5.197672
                  }}
                  anchor={{ x: 0.5, y: 0.5 }}
                >
                  <Image
                    source={require('../src/
                           logo_noshadow.png')}
                    style={{ width: 20, height: 20 }}
                  />
                </Marker>
              </MapView>
          )
      }
  }
 

итак, когда я нажимаю кнопку, чтобы перейти к карте. Я хочу, чтобы карта переходила к маркеру и показывала его в центре.

Я попытался добавить markerId в качестве параметра, но я не знаю, как добавить его к маркеру.

Кто-нибудь может мне помочь с этим?

Ответ №1:

В MapView вы можете установить ссылку. В подходе, основанном на перехватах, это будет выглядеть примерно так:

 const mapRef = React.useRef(null);

<MapView
    ref={mapRef}
    ... the rest of your settings
/>
 

Я вижу, что вы используете подход, основанный на классах, но ссылки доступны и там.
Затем по этой ссылке у вас будет вызван метод fitToSuppliedMarkers .
В качестве первого параметра он принимает массив marker identifiers и при вызове фокусирует карту на маркерах, которые соответствуют предоставленному списку.

 mapRef.current.fitToSuppliedMarkers([ArrayContaingMarkersIdentifiers], {
    animated: true,
    edgePadding: {
        top: 50,
        right: 50,
        bottom: 50,
        left: 50,
    },
});
 

https://github.com/react-native-maps/react-native-maps/blob/master/docs/mapview.md#methods

Чтобы это сработало, вам нужно добавить уникальный identifier для каждого <Marker />

https://github.com/react-native-maps/react-native-maps/blob/master/docs/marker.md

Я вижу, что вы используете подход, основанный на классах, но ссылки доступны и там.