Использование Google Place Autocomplete API в React - PullRequest
0 голосов
/ 20 октября 2018

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

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places&callback=initMap" async defer></script>

в файл HTML, а затем иметь функцию инициализации, указывающую на элемент - как мне поступить с моим реагирующим компонентом / JSX?Я предполагаю, что мне придется импортировать API-ссылку, но я не знаю, куда идти.

import React from 'react';
import "https://maps.googleapis.com/maps/api/js?key=MYKEY&libraries=places&callback=initMap";

const SearchBar = () => (   
    <input type="text" id="search"/> //where I want the google autocomplete to be
);

export default SearchBar;

1 Ответ

0 голосов
/ 21 октября 2018

Загрузка Google Maps API через статический import:

import "https://maps.googleapis.com/maps/api/js?key=MYKEY&libraries=places&callback=initMap";

не поддерживается, для этого необходимо рассмотреть различные варианты:

Что касается компонента SearchBar, в приведенном ниже примере показано, как реализовать простую версию Поместить автозаполнение (без зависимости от экземпляра Google Map) на основе этого официального примера

import React from "react";
/* global google */


class SearchBar extends React.Component {
  constructor(props) {
    super(props);
    this.autocompleteInput = React.createRef();
    this.autocomplete = null;
    this.handlePlaceChanged = this.handlePlaceChanged.bind(this);
  }

  componentDidMount() {
    this.autocomplete = new google.maps.places.Autocomplete(this.autocompleteInput.current,
        {"types": ["geocode"]});

    this.autocomplete.addListener('place_changed', this.handlePlaceChanged);
  }

  handlePlaceChanged(){
    const place = this.autocomplete.getPlace();
    this.props.onPlaceLoaded(place);
  }



  render() {
    return (
        <input ref={this.autocompleteInput}  id="autocomplete" placeholder="Enter your address"
         type="text"></input>
    );
  }
}

Вот демоверсия

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