[英]React-google-maps zoom issue
我正在使用react.google.maps
並且嘗試根據縮放級別顯示不同的標記。 我的問題是,有時在縮放時,地圖不會更新(不會根據縮放級別重新渲染地圖圖塊)。 當我定義了onZoomChanged
方法時,就會發生這種情況。 如果刪除它,一切正常。
這是我的班級樣子:
class Map extends Component {
constructor(props) {
super(props);
this.googleMap = React.createRef();
this.state = {
zoom: 2
};
}
onZoomChanged = () => {
this.setState({
zoom: this.googleMap.current.getZoom()
});
};
getMarkers() {
const { zoom } = this.state;
let Markers = null;
// get markers based on zoom
return Markers;
}
render() {
const { center } = this.props;
return (
<GoogleMap
defaultZoom={2}
defaultCenter={{
lat: center.latitude,
lng: center.longitude
}}
defaultOptions={{
mapTypeControl: false,
streetViewControl: false,
zoomControl: false,
fullscreenControl: false,
styles: mapStyles,
minZoom: 2,
maxZoom: 10
}}
ref={this.googleMap}
onZoomChanged={this.onZoomChanged}
>
{this.getMarkers()}
</GoogleMap>
);
}
}
以下是一些屏幕快照來說明這種行為:
任何幫助,將不勝感激。 提前致謝!
好的...看來我的問題與中心有關,或者至少已解決了該問題:
onZoomChanged = () => {
const newCenter = this.googleMap.current.getCenter();
this.setState({
zoom: this.googleMap.current.getZoom(),
center: {
latitude: newCenter.lat(),
longitude: newCenter.lng()
}
});
};
我還更改了onIdle
方法的中心:
onIdle = () => {
const { center } = this.state;
const newCenter = this.googleMap.current.getCenter();
const centerLng = newCenter.lng();
const centerLat = newCenter.lat();
// other logic for bounds
if (center.latitude !== centerLat || center.longitude !== centerLng) {
this.setState({
center: {
latitude: centerLat,
longitude: centerLng
}
});
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.