Saya menulis bahagian kod ini untuk menunjukkan arah pada peta google Tetapi pada masa ini saya hanya mempunyai kedudukan permulaan dan penamat Saya mahu mempunyai lebih banyak perhentian dan membuat laluan sebaik mungkin Bagaimanakah saya boleh memasuki berbilang perhentian? Itulah yang saya lakukan setakat ini
<table> <tr> <th>Start</th> <th><GmapAutocomplete @place_changed="setPlace" /></th> <th style="width: 50%;"><button class="btn" @click="addMarker(0)">Add</button></th> </tr> <tr> <th>End</th> <th><GmapAutocomplete @place_changed="setPlace" /></th> <th style="width: 50%;"><button class="btn" @click="addMarker(1)">Add</button></th> </tr> </table>
Komponen arah
import { MapElementFactory } from "vue2-google-maps"; export default MapElementFactory({ name: "directionsRenderer", ctr() { return window.google.maps.DirectionsRenderer; }, events: [], mappedProps: {}, props: { origin: { type: [Object, Array] }, destination: { type: [Object, Array] }, travelMode: { type: String }, }, afterCreate(directionsRenderer) { console.log(1) let directionsService = new window.google.maps.DirectionsService(); this.$watch( () => [this.origin, this.destination, this.travelMode], () => { let { origin, destination, travelMode } = this; if (!origin || !destination || !travelMode) return; directionsService.route( { origin, destination, travelMode, }, (response, status) => { if (status !== "OK") return; // eslint-disable-next-line no-debugger //debugger directionsRenderer.setDirections(response); } ); } ); }, });
<DirectionsRenderer travelMode="DRIVING" :origin="startLocation" :destination="endLocation" />
Dan fungsi saya
setPlace(place) { this.currentPlace = place; }, addMarker(index) { const marker = { lat: this.currentPlace.geometry.location.lat(), lng: this.currentPlace.geometry.location.lng(), }; if (index === 0) this.startLocation = marker; if (index === 1) this.endLocation = marker; this.center = marker; console.log(this.startLocation, this.endLocation) },
Setakat ini saya baik-baik saja, semuanya berjalan lancar, tetapi saya perlu melakukan lebih banyak perhentian Daripada apa yang anda boleh lihat, saya hanya mempunyai satu pembolehubah pada akhirnya Bagaimana saya meneruskan? Bolehkah saya menyesuaikan diri dengan kod semasa?
Saya pernah mengalami masalah ini sebelum ini dan ini akan membantu:
Pertama, anda perlu
waypoints
和optimizeWaypoints
键添加到 DirectionsRenderer.js 文件中的directionsService.route
Selepas itu anda perlu mengikat kunci ini pada kunciDirectionsRenderer
组件,并且需要在组件文件中创建一个名为 waypnt 的数组,并将所有Destination
点和stopover: true
dalam projek anda yang anda tolak ke atasnya seperti ini:Lihat ini:
DirectionsRenderer.js
MapContainer.vue
Untuk maklumat lanjut, semak: https://developers.google.com/maps/docs/javascript/examples/directions-waypoints#maps_directions_waypoints-javascript