I read the docs and it conveniently outlines the props and methods available. Please look here.
My question is, given the example component here:
import {withScriptjs, withGoogleMap, GoogleMap, Marker} from "react-google-maps";
class MyParentComponentWrapper extends Component {
...
...// inside react component class
mapComponent() {
const MyMapComponent = withScriptjs(withGoogleMap((props) =>{
return (
<GoogleMap
defaultZoom={18}
defaultCenter={{ lat: props.lat, lng: props.lng }}
>
{ props.isMarkerShown && <Marker onPositionChanged={()=>{
// This event will trigger the
// call to update the state where lat and lng will go.
}} draggable position={{ lat: props.lat, lng: props.lng }} /> }
</GoogleMap>
)
}))
return (
<MyMapComponent
lat={this.state.form.location.latitude}
lng={this.state.form.location.longitude}
googleMapURL={`https://maps.googleapis.com/maps/api/js?key=${env.google.apiKey}&v=3.exp&libraries=geometry,drawing,places`}
loadingElement={<div style={{ height: `100%` }} />}
containerElement={<div style={{ height: `400px` }} />}
mapElement={<div style={{ height: `100%` }} />}
isMarkerShown/>
)
}
...
See the onPositionChanged
event? I want to update the state of MyParentComponentWrapper
which contains lat and lng, but I have no idea how to call the getPosition()
to get the lat lng values to do so. No examples were provided and the documentation looks unclear... Is there a way to call the methods within the Marker
component that I am unaware of? If you know how to do this, can you please provide an example on how to do so?
onPositionChanged
event does not provide the triggered event but you could store a reference to Marker
component via ref
attribute:
<GoogleMap defaultZoom={8} defaultCenter={{ lat: -34.397, lng: 150.644 }}>
<Marker position={{ lat: -34.397, lng: 150.644 }} draggable={true} ref={props.onMarkerMounted} onPositionChanged={props.onPositionChanged} />
</GoogleMap>
and then get the position of marker in onPositionChanged
event like this:
lifecycle({
componentWillMount() {
const refs = {}
this.setState({
onMarkerMounted: ref => {
refs.marker = ref;
},
onPositionChanged: () => {
const position = refs.marker.getPosition();
console.log(position.toString());
}
})
},
})
来源:https://stackoverflow.com/questions/48588302/react-google-maps-how-does-one-get-marker-position