Я использую в своем приложении пакет react-google-maps
. Я хочу получить доступ к методу Map.setZoom (), но получаю
TypeError: объект не поддерживает свойство или метод setZoom.
Интересно, что метод Map.panTo()
отлично работает. Оба они должны быть членами объекта Map.
https://developers.google.com/maps/documentation/javascript/reference/3.exp/map#Map.panTo https://developers.google.com/maps/documentation/javascript/reference/3.exp/map#Map.setZoom
withHandlers(() => {
const refs = {
map: undefined
}
return {
onMapMounted: () => ref => {
refs.map = ref
},
onClick: () => () => {
console.log("Getting location...");
navigator.geolocation.getCurrentPosition(
position => {
const coords = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
console.log(coords);
refs.map.panTo(coords); // This line works
refs.map.setZoom(8); // This line throws a Type Error
},
error => {
console.log("Error" + error.code);
}
);
}
}
}),
...
Вот мое полное определение компонента, основанное на react-google-maps
документации https://tomchentw.github.io/react-google-maps/#googlemap
const Map = compose(
withProps({
googleMapURL: `${url}`,
loadingElement: <div style={{ height: `100%` }} />,
containerElement: <div style={{ height: `400px` }} />,
mapElement: <div style={{ height: `100%` }} />,
}),
withHandlers(() => {
const refs = {
map: undefined
}
return {
onMapMounted: () => ref => {
refs.map = ref
},
onClick: () => () => {
console.log("Getting location...");
navigator.geolocation.getCurrentPosition(
position => {
const coords = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
console.log(coords);
refs.map.panTo(coords);
refs.map.setZoom(8);
},
error => {
console.log("Error" + error.code);
}
);
}
}
}),
withScriptjs,
withGoogleMap
)((props) =>
<GoogleMap
defaultZoom={4}
defaultCenter={DefaultCoords}
ref={props.onMapMounted}
>
<OverlayView
position={DefaultCoords}
mapPaneName={OverlayView.OVERLAY_MOUSE_TARGET}
getPixelPositionOffset={getPixelPositionOffset}
>
<div style={{ background: `white`, border: `1px solid #ccc`, padding: 15 }}>
<button onClick={props.onClick}>Use GPS</button>
</div>
</OverlayView>
{props.isMarkerShown && <Marker position={DefaultCoords} />}
</GoogleMap>
);
setZoom
метода согласно документации. - person Tholle   schedule 11.07.2018react-google-map
компоненте. Кажется, что нет nofollow " быть методом этого компонента для настройки масштабирования так же, как для панорамирования. - person Tholle   schedule 11.07.2018