gpt4 book ai didi

reactjs - react-google-maps 如何获取标记位置?

转载 作者:行者123 更新时间:2023-12-03 14:08:19 24 4
gpt4 key购买 nike

我阅读了文档,它方便地概述了可用的 Prop 和方法。请看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/>
)
}

...

看到onPositionChanged事件了吗?我想更新包含 lat 和 lng 的 MyParentComponentWrapper 状态,但我不知道如何调用 getPosition() 来获取 lat lng 值来执行此操作。没有提供示例,文档看起来不清楚...有没有办法调用我不知道的 Marker 组件中的方法?如果您知道如何执行此操作,能否提供一个示例来说明如何执行此操作?

最佳答案

onPositionChanged 事件不提供触发事件,但您可以通过 ref 属性存储对 Marker 组件的引用:

<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>

然后在 onPositionChanged 事件中获取标记的位置,如下所示:

lifecycle({
componentWillMount() {
const refs = {}

this.setState({

onMarkerMounted: ref => {
refs.marker = ref;
},

onPositionChanged: () => {
const position = refs.marker.getPosition();
console.log(position.toString());
}
})
},
})

Demo

关于reactjs - react-google-maps 如何获取标记位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48588302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com