Карта обратно на предыдущую позицию после onRegionChange - PullRequest
0 голосов
/ 22 февраля 2019

Я использую Expo MapView, и когда я пытаюсь изменить значение указанной области в onRegionChange, карта возвращается в предыдущую позицию.Как это исправить?

import React from 'react';
    import { Text, View, TouchableOpacity } from 'react-native';
    import { Camera, Permissions } from 'expo';
    import {
      Location,
      MapView,
      Marker
    } from 'expo';

    export default class App extends React.Component {
      state= {
          region: {
            latitude: 37.78825,
            longitude: -122.4324,
            latitudeDelta: 0.0922,
            longitudeDelta: 0.0421,
          },
      }

      render() {
        return (
          <MapView
            style={{ flex: 1, height: '100%', width: '100%', zIndex: 0 }}
            onRegionChange={(region) =>this.setState({ region: region })}
            region={this.state.region}
          />
        );
      }
    }

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Я решил с помощью:

 onRegionChangeComplete={(region) => props.map.animateToRegion(region, 0)}
0 голосов
/ 22 февраля 2019

Это потому, что вы устанавливаете состояние, которое передается реквизиту региона в onRegionChange,

setState требуется время для установки значения и повторного рендеринга компонента.

МеждуonRegionChange вызывается, по крайней мере, 5-10 раз.

Следовательно, снова 5-10 setState, поэтому оно становится медленным.

Если вы хотите сохранить текущий регион, просто используйте другое состояниечем region.

РЕДАКТИРОВАТЬ : на самом деле использование состояния также может быть запаздывающим, потому что, в конце концов, он снова выполняет все вещи, но теперь просто изменилось имя.

SOвы можете использовать обычную переменную вместо state.

...