Clé*_*ent 4 javascript google-maps google-maps-api-3 typescript reactjs
我正在尝试在我的项目中实现 Google Maps Api,并且正在遵循 NPM 捆绑包中的文档:https ://www.npmjs.com/package/@react-google-maps/api
当我尝试调用我的 Google 地图组件时,这是有效的,但每次刷新时,即使缩放正确传递到地图,我的地图也会缩放到最大级别。
当我 console.logging(map) 时,它说缩放设置为 22..
您对它可能来自哪里有什么想法吗?
多谢!
:)
这是代码
import React from 'react'
import { GoogleMap, useJsApiLoader, Marker } from '@react-google-maps/api';
export interface Props {
location: {
lat: number,
lng: number
},
//zoom: number,
}
const containerStyle = {
width: '600px',
height: '400px'
};
const GoogleMapComponent: React.FC<Props> = ({
location,
// zoom = 12,
}: Props) => {
const { isLoaded } = useJsApiLoader({
id: 'google-map-script',
googleMapsApiKey: process.env.GOOGLE_MAP_API_KEY
})
const [map, setMap] = React.useState(null)
console.log(location)
const onLoad = React.useCallback(function callback(map) {
const bounds = new window.google.maps.LatLngBounds(location);
map.fitBounds(bounds);
setMap(map)
}, [])
const onUnmount = React.useCallback(function callback(map) {
setMap(null)
}, [])
return isLoaded ? (
<GoogleMap
mapContainerStyle={containerStyle}
center={location}
onLoad={onLoad}
onUnmount={onUnmount}
zoom={12}
>
{ /* Child components, such as markers, info windows, etc. */ }
{/* <Marker position={location}/> */}
</GoogleMap>
) : <></>
}
export default React.memo(GoogleMapComponent)Run Code Online (Sandbox Code Playgroud)
import React, { ReactElement, useState, useEffect, useMemo } from "react";
import { IPark } from "../../../types/park";
import parkService from "../../../services/Parks/park-service";
import { CContainer, CRow, CCol } from '@coreui/react';
import GoogleMap from "../../../components/Map/GoogleMap";
const DashboardPark = (props: any): ReactElement => {
const [park, setPark]: [any, (park: IPark) => void] =
useState();
const [isLoading, setIsLoading]: [boolean, (loading: boolean) => void] =
useState<boolean>(true);
const [isError, setIsError]: [string, (error: string) => void] = useState("");
useEffect(() => {
parkService.getPark(props.match.params.id).
then((response) => {
console.log(response)
setPark(response.data);
setIsLoading(false);
})
.catch((ex) => {
console.log(ex.response)
const error =
ex.code === "ECONNABORTED"
? "A timeout has occurred"
: ex.response.data
setIsError(error);
setIsLoading(false);
});
}, []);
return (
<CContainer>
<CRow>
<h2>List</h2>
</CRow>
<CRow>
{isLoading ? (
<p>Loading</p>
) : (
<div>
{/* <GoogleMap location={{lat: park.location[0],lng: park.location[1]}}/> */}
</div>
)}
{isError ? (
<p>{isError}</p>
) : ''}
</CRow>
<CRow>
</CRow>
</CContainer>
);
};
export default DashboardPark;Run Code Online (Sandbox Code Playgroud)
Clé*_*ent 17
我发现它来自
const bounds = new window.google.maps.LatLngBounds(location);
map.fitBounds(bounds);Run Code Online (Sandbox Code Playgroud)
所以我只是将其替换为
map.setZoom(zoom)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11526 次 |
| 最近记录: |