我有一个使用https://github.com/tomchentw/react-google-maps的非常简单的反应应用程序,但我很难理解如何获取对我当前地图的引用或如何访问google.maps.Map
自定义组件中的对象。
我在 repo 上找到了这个,但是在阅读了这些帖子后,我仍然有点困惑。
我正在从DirectionsRenderer示例开始构建我的应用程序。
我接下来要做的是添加我自己的自定义组件来选择起点并使用 Google Maps 自动完成 API。
是的,我知道这个包已经有一个组件,但我需要做的不仅仅是在地图上搜索一个位置。
为了满足我的需求,我会做类似的事情
const autocomplete = new google.maps.places.Autocomplete(node);
autocomplete.bindTo('bounds', map);
node
我绑定自动完成功能的元素在哪里,并且map
是google.maps.Map
对象的一个实例。
到目前为止我的申请:
应用程序.jsx
const App = ({ store }) => (
<Provider store={store}>
<div>
<Sidebar>
<StartingPoint defaultText="Choose starting point…" />
</Sidebar>
<GoogleApiWrapper />
</div>
</Provider>
);
GoogleApiWrapper
const GoogleMapHOC = compose(
withProps({
googleMapURL: 'https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places&key=__GAPI_KEY',
loadingElement: <div style={{ height: '100vw' }} />,
containerElement: <div style={{ height: '100vh' }} />,
mapElement: <div style={{ height: '100%' }} />,
}),
withScriptjs,
withGoogleMap,
lifecycle({
componentDidMount() {
const DirectionsService = new google.maps.DirectionsService();
// make google object available to other components
this.props.onLoad(google);
DirectionsService.route({
origin: new google.maps.LatLng(41.8507300, -87.6512600),
destination: new google.maps.LatLng(41.8525800, -87.6514100),
travelMode: google.maps.TravelMode.DRIVING,
}, (result, status) => {
if (status === google.maps.DirectionsStatus.OK) {
this.setState({
directions: result,
});
} else {
console.error(`error fetching directions ${result}`);
}
});
},
}),
)(props => (
<GoogleMap
ref={props.onMapMounted}
defaultZoom={13}
defaultCenter={new google.maps.LatLng(37.771336, -122.446615)}
>
{props.directions && <DirectionsRenderer directions={props.directions} />}
</GoogleMap>
));
如果我无法访问google.maps.Map
包装器之外的对象,我也想访问对包含地图的元素的引用,以便我可以实例化一个new google.maps.Map(ref_to_elem, options);
任何帮助将不胜感激!