Будет ли Google API запускаться несколько раз при обновлении текущего местоположения? - PullRequest
0 голосов
/ 09 апреля 2020

ОБНОВЛЕНО

Более подробную информацию об этом вопросе вы найдете на странице github из библиотеки, которую я использую.

Ответ:

При использовании библиотеки response-native-maps-directions API Google запускается только при обновлении источника, пункта назначения или путевой точки. С тех пор требуется новый расчет.

Вопрос:

Итак, у меня есть этот вопрос, потому что в настоящее время я использую API-интерфейс Google Directions API, который использует модель "pay-as-you- go". Теперь я боюсь использовать API в своем коде, так что когда пользователь обновляет местоположение, он снова запускает API, поэтому он подумает, что я хочу получить новый результат от API направлений.

Я использую response-native-maps-directions библиотека для отображения маршрута на карте.

Мне нужно больше пояснений.

API вызывается только при вызове один раз при открытии компонента или он также сработает при обновлении местоположения пользователя, даже если я не хочу что-то делать с местоположением пользователя в запросе?

Вот часть моего кода который показывает текущий поток, о котором я говорю:

Ключ API регистрируется в конструкторе

constructor(props){
 super(props);
 if (props.apiKey !== undefined) {
   this.apiKey = props.apiKey;
 }

 this.origin = { latitude: this.route.waypoints[0].latitude, longitude: 
 this.route.waypoints[0].longitude };
 this.destination = { latitude: this.route.waypoints[this.route.waypoints.length - 1].latitude, longitude: this.route.waypoints[this.route.waypoints.length - 1].longitude };
 this.GOOGLE_MAPS_APIKEY = this.apiKey;
}

GetUserLocation вызывается в componentWillUnmount (это единственное, что нужно обновить, и я не хочу, чтобы это вызывало API)

getUserLocation = async () => {
 this.location = await Location.watchPositionAsync(
  {
    enableHighAccuracy: true,
    distanceInterval: 1,
    timeInterval: 100,
  },
  (newLocation) => {
    let coords = newLocation.coords;

    console.log("USER LOCATION", coords);
    this.setState({
      userLocation: coords,
      region: {
        LATITUDE: coords.latitude,
        LONGITUDE: coords.longitude
      }
    });
  },
  (error) => console.log(error)
);
};

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

<MapViewDirections
  origin={this.origin}
  waypoints={this.coordinates.slice(1, -1)}
  destination={this.destination}
  apikey={this.GOOGLE_MAPS_APIKEY}
  strokeWidth={20}
  strokeColor="#DD8526"
/>

Это маркер, который обновляется, находится в том же MapView, что и блок выше

<Marker style={styles.markerStyle} coordinate={{ latitude: lat, longitude: lng }} title="Your Location">
  <Text style={styles.markerTextStyle}>You</Text>
  <Image source={require("./../../assets/img/other/you.png")} style={{ height: 20, width: 20 }/>
</Marker>

Есть только один компонент в рендере, который обновляет, так что я не знаю, будет ли это фактически вызывать вызов API снова.

Не стесняйтесь говорить это, когда вам нужно что-то более конкретное, чтобы предоставить правильную информацию об этом !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...