Я пытаюсь динамически обновить режим движения в зависимости от выбранных переключателей.
Я прочитал документацию по направлениям API и попробовал следующее.
class Transport extends React.Component {
state={
origin: '',
destination: '',
directions: '',
mode: 'DRIVING'
}
setDirections(){
const DirectionsService = new google.maps.DirectionsService();
DirectionsService.route({
origin: this.state.origin,
destination: this.state.destination,
travelMode: google.maps.TravelMode[this.state.mode]
}, (result, status) => {
if (status === google.maps.DirectionsStatus.OK) {
this.setState({
directions: result,
});
} else {
console.error(`error fetching directions ${result}`);
alert('Selected mode of transport is not available for the for the trip!');
}
});
}
showPlaceDetails(place) {
let destination = sessionStorage.getItem('city');
destination=destination.replace(/\+/g, ' ');
console.log(destination);
let origin = place.address_components[0].long_name.toString();
try{
origin+= ' ' + place.address_components[2].long_name.toString();
}catch(e){}
console.log(origin);
this.setState(() => ({origin, destination}));
this.setDirections();
}
onModeChange = (e) =>{
const mode = e.target.value;
console.log(mode);
this.setState(() => ({mode}));
this.setDirections();
}
render() {
const GoogleMapExample = withGoogleMap(props => (
<GoogleMap
defaultCenter = { { lat: 40.756795, lng: -73.954298 } }
defaultZoom = { 13 }
>
{this.state.directions && <DirectionsRenderer directions={this.state.directions} />}
</GoogleMap>
));
return(
<div>
<div className='travel-details-container'>
<div>
<CitySuggestionBar onPlaceChanged={this.showPlaceDetails.bind(this)} />
<div>
<label htmlFor="driving">Driving</label>
<input type="radio" name="transport-type" id="driving" value="DRIVING"
onChange={this.onModeChange} defaultChecked />
<label htmlFor="transit">Bus/Train</label>
<input type="radio" name="transport-type" id="transit" value="TRANSIT"
onChange={this.onModeChange} />
<label htmlFor="air">Airways</label>
<input type="radio" name="transport-type" id="air" value="AIRWAYS"
onChange={this.onModeChange} />
</div>
</div>
</div>
<GoogleMapExample
containerElement={ <div style={{ height: `500px`, width: '100%' }} /> }
mapElement={ <div style={{ height: `100%` }} /> }
/>
</div>
);
}
};
Iустановили режим по умолчанию на ДРАЙВИНГ в состоянии, и радио по умолчанию, отмеченное также ДРАЙВИНГ.Тем не менее, когда я меняю его на Автобус / Поезд, он по-прежнему движется по карте.Но самое непонятное, когда я снова переключаюсь на проезд, карта теперь обновляется до «Транзит», а режим в состоянии «за рулем».
Пожалуйста, помогите!Заранее спасибо.