2010-04-30 25 views
9

Hey Leute. Ich muss wissen, ob das, was ich brauche, erreichbar ist.Benutzerdefinierte Routen/Pfade/Straßen auf Google Maps

Ich muss in der Lage sein, entweder V2 oder V3 (vorzugsweise 3), Wege zu erstellen, die Gebäude in einem Sinne ignorieren.

Ich habe versucht, selbst eine KML-Datei zu erstellen, um alle Pfade selbst zu zeichnen, und dann eine Möglichkeit zu finden, sie je nach Bedarf ein- oder auszuschalten.

Zum Beispiel. Der Benutzer möchte von Punkt A nach Punkt B gehen. Zwischen diesen Punkten befindet sich eine Reihe von Gebäuden. Der Benutzer kann durch diese Gebäude gehen (es ist ein Campus). Ich möchte ihnen das auf der Karte zeigen.

Auf diese Weise müssen Sie keine Schleife um einen Parkplatz herum machen, nur um zum anderen Ende zu kommen.

Wenn es irgendeinen Weg dazu gibt, würde ich gerne wissen. Es ist alles vorher festgelegten Pfaden basierend auf den beiden Eingaben des Benutzers in das Drop-Down-Menü http://www.uottawa.ca/maps/

:

Ein Beispiel dafür, was ich verlangen kann hier gefunden werden. Ich kann das deutlich sehen. Aber ich habe keine Ahnung ob a) das in v3 gemacht werden kann, und b) wie in aller Welt haben sie es selbst gemacht.

Hilfe erforderlich und sehr geschätzt!

Antwort

6

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:

Google Maps Campus

+1

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

1

Warum können Sie nicht einfach eine Polylinie hinzufügen, die "in der Luftlinie" angezeigt wird?

+1

I denke, wenn das OP sagte, dass die Studenten durch Gebäude gehen können, es war vorgesehen, dass sie von den engen Wegen zwischen den Gebäuden kommen können. So scheint zumindest die Demo-Website zu sein. –

Verwandte Themen