Реакция улиц google-maps на мобильный телефон
Я реализовал в своей программе пакет response-google-maps. Все работает нормально, но когда я смотрю веб-сайт на мобильном телефоне и перехожу к просмотру улиц, по умолчанию включается какая-то опция, позволяющая поворачивать карту при повороте мобильного телефона. Эта опция включена по умолчанию. В правом углу есть маленькая иконка мобильного телефона, и если я нажму на нее, она будет отключена, и единственный способ двигаться в режиме просмотра улиц будет с помощью пальцев. Как сделать это "нормальное" движение пальцами по умолчанию, когда кто-то входит в режим просмотра улиц?
РЕДАКТИРОВАТЬ: Добавить пример
import { withScriptjs, withGoogleMap, GoogleMap, Marker, InfoWindow, } from 'react-google-maps'
import Image from 'semantic-ui-react/dist/commonjs/elements/Image/Image'
class MapInfoComponent extends Component {
state = {
openInfoWindow: true,
}
onMarkerClick = () => {
this.setState(prevState => ({
openInfoWindow: !prevState.openInfoWindow,
}))
}
render() {
return (
<GoogleMap defaultZoom={10} center={{ lat: 16.4555, lng: 14.1257, }}>
<Marker position={{ lat: 16.4555, lng: 14.1257, }} onClick={this.onMarkerClick}>
{this.state.openInfoWindow && (
<InfoWindow onCloseClick={this.onMarkerClick}>
<Image src={logo} size="small" />
</InfoWindow>
)}
</Marker>
</GoogleMap>
)
}
}
const GoogleMapComponent = withGoogleMap(MapInfoComponent)
const MapComponent = withScriptjs(GoogleMapComponent)
const Maps = () => (
<div styleName="container">
<MapComponent
googleMapURL={`https://maps.googleapis.com/maps/api/js?key=${process.env.GOOGLE_MAPS ||
'addGoogleMapsKey'}&v=3.exp&libraries=geometry,drawing,places`}
loadingElement={<div style={{ height: '100%', }} />}
containerElement={<div style={{ height: '100%', }} />}
mapElement={<div style={{ height: '100%', }} />}
/>
</div>
)
export default Maps
1 ответ
Функция, которую вы ищете, называется motionTracking
,
С react-google-maps
Я полагаю, вы используете StreetViewPanorama
компонент в вашем коде. На нем два реквизита: defaultMotionTracking
а также motionTracking
, Задавать defaultMotionTracking
ложно.
В противном случае значение по умолчанию заканчивается:
Включено или выключено отслеживание движения. Включено по умолчанию, когда присутствует элемент управления отслеживанием движения, так что POV (точка обзора) следует ориентации устройства. Это в первую очередь относится к мобильным устройствам. Если для параметра motionTracking установлено значение false, а функция motionTrackingControl включена, появляется элемент управления отслеживанием движения, но отслеживание отключено. Пользователь может нажать элемент управления отслеживанием движения, чтобы включить эту опцию.
См. Документы response-google-maps и документы Google Maps Platform.
РЕДАКТИРОВАТЬ: В вашем примере, вот возможное решение (не тестировал, но концептуально должно работать):
import { withScriptjs, withGoogleMap, GoogleMap, Marker, InfoWindow, } from 'react-google-maps'
import Image from 'semantic-ui-react/dist/commonjs/elements/Image/Image'
class MapInfoComponent extends Component {
state = {
openInfoWindow: true,
}
onMarkerClick = () => {
this.setState(prevState => ({
openInfoWindow: !prevState.openInfoWindow,
}))
}
buildGoogleMap() {
return (
<GoogleMap defaultZoom={10} center={{ lat: 16.4555, lng: 14.1257, }}>
<Marker position={{ lat: 16.4555, lng: 14.1257, }} onClick={this.onMarkerClick}>
{this.state.openInfoWindow && (
<InfoWindow onCloseClick={this.onMarkerClick}>
<Image src={logo} size="small" />
</InfoWindow>
)}
</Marker>
</GoogleMap>
)
}
render() {
const googleMap = this.buildGoogleMap();
googleMap.getStreetView().setMotionTracking(false);
return googleMap;
}
}