Wenn Ihr Campus nicht sehr groß ist, sollten Sie möglicherweise alle Polylinienrouten für jede Permutation manuell definieren, sodass Sie, wenn Sie 4 Gebäude A, B, C und D haben, 6 Routen definieren müssen :
A:B, A:C, A:D, B:C, B:D, C:D
bauen Dann einfach einige grundlegende Logik JavaScript, dass, wenn Sie als Ziel A als Ausgangspunkt und Gebäude C wählte den Aufbau, Sie alle Polylinien verstecken und zeigen die A: nur C-Linie. Sie können auch Googles polyline methods verwenden, um die Länge in Metern für jede Route zu erhalten, falls dies erforderlich ist.
Dies ist eine kurze Tabelle, wie viele Routen würden Sie definieren müssen, entsprechend der Anzahl der Gebäude, die Sie haben:
+-------------+--------+
| Buildings | Routes |
|-------------+--------+
| 5 | 10 |
| 10 | 45 |
| 15 | 105 |
| 20 | 190 |
| 25 | 300 |
+-------------+--------+
Wie Sie sehen können, wird es wirklich außer Kontrolle geraten, wenn die Anzahl der Gebäude gehen hoch, also würde ich sagen, dass diese Option nur bis zu einem bestimmten Punkt möglich ist. Zumindest haben Sie Glück, denn die Reihenfolge der Permutationen ist nicht wichtig, vorausgesetzt, dass die Menschen jede Route in beide Richtungen gehen können.
Interessante Anmerkung: bemerkte ich, dass die Ottawa demo Sie nicht mitgeliefert macht jede AJAX aufruft, wenn für Richtungen anfordert. Daher besteht eine gute Chance, dass sie dasselbe tun, wie es oben vorgeschlagen wurde.
UPDATE:
Hier arbeitet Demo die v3 Maps API verwenden, die hoffentlich kann Ihnen helfen, den Einstieg:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps Campus</title>
<script src="http://maps.google.com/maps/api/js?sensor=false"
type="text/javascript"></script>
</head>
<body>
<div id="map" style="width: 550px; height: 400px"></div>
<div>Start:
<select id="start">
<option>Building 1</option>
<option>Building 2</option>
<option>Building 3</option>
</select>
</div>
<div>End:
<select id="end">
<option>Building 1</option>
<option>Building 2</option>
<option>Building 3</option>
</select>
</div>
<input type="button" onclick="drawDirections();" value="GO" />
<script type="text/javascript">
var mapOptions = {
mapTypeId: google.maps.MapTypeId.TERRAIN,
center: new google.maps.LatLng(47.690, -122.310),
zoom: 12
};
var map = new google.maps.Map(document.getElementById("map"),
mapOptions);
// Predefine all the paths
var paths = [];
paths['1_to_2'] = new google.maps.Polyline({
path: [
new google.maps.LatLng(47.656, -122.360),
new google.maps.LatLng(47.656, -122.343),
new google.maps.LatLng(47.690, -122.310)
], strokeColor: '#FF0000'
});
paths['1_to_3'] = new google.maps.Polyline({
path: [
new google.maps.LatLng(47.656, -122.360),
new google.maps.LatLng(47.656, -122.343),
new google.maps.LatLng(47.690, -122.270)
], strokeColor: '#FF0000'
});
paths['2_to_3'] = new google.maps.Polyline({
path: [
new google.maps.LatLng(47.690, -122.310),
new google.maps.LatLng(47.690, -122.270)
], strokeColor: '#FF0000'
});
function drawDirections() {
var start = 1 + document.getElementById('start').selectedIndex;
var end = 1 + document.getElementById('end').selectedIndex;
var i;
if (start === end) {
alert('Please choose different buildings');
}
else {
// Hide all polylines
for (i in paths) {
paths[i].setOptions({ map: null });
}
// Show the route
if (typeof paths['' + start + '_to_' + end] !== 'undefined') {
paths['' + start + '_to_' + end].setOptions({ map: map });
}
else if (typeof paths['' + end + '_to_' + start] !== 'undefined') {
paths['' + end + '_to_' + start].setOptions({ map: map });
}
}
}
</script>
</body>
</html>
Screenshot:
Das Problem, das ich habe, ist zweifach. Während ich den Verdienst definitiv von deiner Demo hier sehe, und ich würde LIEBEN, wenn es so einfach wäre, erfordert die vorliegende Aufgabe, dass Studenten von, sagen wir, Klasse A zu Klasse B kommen können. Die Klassen sind etwas nah in der Nähe, und während ich sicher bin, dass ich die Wege für das Gebäude bauen könnte, sagte man mir, dass es ca. 50 Gebäude. Ich habe versucht und versucht, und es scheint keine Möglichkeit für mich zu geben, die ideale Sache zu tun, die im Grunde eine benutzerdefinierte "Straße" erstellen würde, die die Google-Karte als ein patchable Bereich erkennen wird. Ich muss vielleicht zum Zeichnen von Pfaden von Hand kommen. – Douglas