【发布时间】:2021-03-31 14:47:52
【问题描述】:
我正在尝试构建与 Airbnb 上类似的地图,您可以在拖动地图时查看地点标记。我想在地图上使用 Google Places API 搜索“治疗中心”并放置标记。
我一直在使用新的、重写的 @react-google-maps/api。到目前为止,我能够创建一个搜索框和一个自动完成功能并获得它们的纬度和经度,但两者都只提供特定的位置而不是最相似的搜索(例如,如果你在谷歌地图上搜索 Taco Bell,它会显示为您附近的几个选择)。下面的代码显示了一个带有搜索框的地图:
import { GoogleMap, LoadScript, Marker, StandaloneSearchBox, Autocomplete } from '@react-google-maps/api';
class HeaderMap extends Component {
constructor (props) {
super(props)
this.autocomplete = null
this.onLoad = this.onLoad.bind(this)
this.onPlaceChanged = this.onPlaceChanged.bind(this)
this.state = {
currentLocation: {lat: 0, lng: 0},
markers: [],
zoom: 8
}
}
componentDidMount() {
navigator?.geolocation.getCurrentPosition(({coords: {latitude: lat, longitude: lng}}) => {
const pos = {lat, lng}
this.setState({currentLocation: pos})
})
}
onLoad (autocomplete) {
console.log('autocomplete: ', autocomplete)
this.autocomplete = autocomplete
}
onPlaceChanged() {
if (this.autocomplete !== null) {
let lat = this.autocomplete.getPlace().geometry.location.lat()
let long = this.autocomplete.getPlace().geometry.location.lat()
} else {
console.log('Autocomplete is not loaded yet!')
}
}
render() {
return (
<LoadScript
googleMapsApiKey="API_KEY_HERE"
libraries={["places"]}
>
<GoogleMap
id='search-box-example'
mapContainerStyle={containerStyle}
center={this.state.currentLocation}
zoom={14}
// onDragEnd={search for centers in current location}
>
<Marker key={1} position={this.state.currentLocation} />
<Autocomplete
onLoad={this.onLoad}
onPlaceChanged={this.onPlaceChanged}
>
<input
type="text"
placeholder="Customized your placeholder"
style={inputStyles}
/>
</Autocomplete>
</GoogleMap>
</LoadScript>
);
}
}
如何自动搜索位置的边界并根据关键字获取每个结果的经纬度?感谢您的帮助!
【问题讨论】:
标签: reactjs google-maps-api-3 react-google-maps