Я новичок в React и Google Maps. Я использую google-map-реакции для интеграции Google Maps с моим приложением React. Мне удалось успешно загрузить карту и добавить маркеры.
Но я получаю сообщение об ошибке при попытке добавить SearchBox. Я следовал за документацией здесь Документация SeachBox , а также ветка вопросов GitHub Issue . Но все же я получаю ошибку. Что не так в этом коде?
Вот мой код
Приложение. js
import React, { Component } from 'react';
import GoogleMapReact from 'google-map-react';
import './App.css';
import Driver from './Driver';
import Passenger from './Passenger';
import SearchBox from './SearchBox';
class App extends Component {
constructor(props) {
super(props);
this.state = {
apiReady: false,
map: null,
googlemaps: null
};
}
static defaultProps = {
center: {
lat: 6.92,
lng: 79.86
},
zoom: 15,
};
handleApiLoaded = (map, maps) => {
// use map and maps objects
if (map && maps) {
this.setState({
apiReady: true,
map: map,
googlemaps: maps
});
}
};
render({ apiReady, googlemaps, map } = this.state) {
return (
// Important! Always set the container height explicitly
<div style={{ height: '100vh', width: '100%' }}>
<GoogleMapReact
bootstrapURLKeys={{ key: 'AIzaSyCk7pbkmNhknGumy2vgDykdgVj6lSreTt0', libraries: ['places'] }}
defaultCenter={this.props.center}
defaultZoom={this.props.zoom}
yesIWantToUseGoogleMapApiInternals
onGoogleApiLoaded={({ map, maps }) => this.handleApiLoaded(map, maps)}
>
<Driver
lat={6.8972152}
lng={79.8541014}
/>
<Passenger
lat={6.9272012}
lng={79.8681316}
/>
{apiReady && (<SearchBox
// placeholder={"123 anywhere st."}
// onPlacesChanged={this.handleSearch}
map={map}
googlemaps={googlemaps} />)}
</GoogleMapReact>
</div>
)
}
}
export default App
SearchBox. js
import React from 'react';
import ReactDOM from 'react-dom'
import PropTypes from 'prop-types'
export default class SearchBox extends React.Component {
static propTypes = {
placeholder: PropTypes.string,
onPlacesChanged: PropTypes.func
}
render() {
return <input ref="input" placeholder={this.props.placeholder} type="text"/>;
}
onPlacesChanged = () => {
if (this.props.onPlacesChanged) {
this.props.onPlacesChanged(this.searchBox.getPlaces());
}
}
componentDidMount() {
var input = ReactDOM.findDOMNode(this.refs.input);
// eslint-disable-next-line no-undef
this.searchBox = new googlemaps.places.SearchBox(input);
this.searchBox.addListener('places_changed', this.onPlacesChanged);
}
componentWillUnmount() {
this.searchBox.removeListener('places_changed', this.onPlacesChanged);
}
}
// eslint-disable-next-line no-unused-expressions
// eslint-disable-next-line no-lone-blocks
{/* <script defer type="text/javascript" src="https://maps.google.com/maps/api/js?key=AIzaSyCk7pbkmNhknGumy2vgDykdgVj6lSreTt0&libraries=places"></script> */}
Я вставил полный код, потому что я не уверен, где я ошибся.