2010-04-30 18 views
9

Hola chicos. Necesito saber si lo que necesito es alcanzable.Rutas/rutas/caminos personalizados en Google Maps

Necesito poder, utilizando V2 O V3 (preferiblemente 3), crear rutas que ignoran edificios en cierto sentido.

Estaba tratando de crear incluso un archivo kml para dibujar todos los caminos yo mismo, y luego encontrar la forma de activarlos/desactivarlos según sea necesario.

Por ejemplo. El usuario quiere ir del punto A al punto B. Entre estos puntos hay una cantidad de edificios. El usuario físicamente PUEDE caminar a través de estos edificios (es un campus). Quiero mostrarles eso en el mapa.

De esta forma no tiene que hacer un loop-de-loop alrededor, por ejemplo, de un estacionamiento, solo para llegar al otro extremo.

Si hay ALGUNA MANERA de hacerlo, me gustaría saber.

Un ejemplo de lo que requiero se puede encontrar aquí: http://www.uottawa.ca/maps/

Es todos los caminos pre-determinado en base a las dos entradas del usuario en el menú desplegable. Puedo ver esto claramente. Pero no tengo idea de si a) esto se puede hacer en v3, y b) cómo lo hicieron ellos mismos.

¡Se requiere asistencia, y es muy apreciada!

Respuesta

6

Si su campus no es muy grande, puede considerar definir manualmente todas las rutas de polilíneas para cada permutación, de modo que si tiene 4 edificios A, B, C y D, deberá definir 6 rutas :

A:B, A:C, A:D, B:C, B:D, C:D 

Después, simplemente construir algo de lógica básica de JavaScript, que cuando eligió la construcción del punto A y C como la construcción de partida como destino, oculta todos los polilíneas y mostrar la A: línea C solamente. También puede usar el polyline methods de Google para obtener la longitud en metros de cada ruta, si es necesario.

Esta es una tabla corta de la cantidad de rutas que tendría que definir, en función del número de edificios tiene:

+-------------+--------+ 
| Buildings | Routes | 
|-------------+--------+ 
|   5 | 10 | 
|  10 | 45 | 
|  15 | 105 | 
|  20 | 190 | 
|  25 | 300 | 
+-------------+--------+ 

Como se puede ver, lo que realmente se sale de control como el número de los edificios se elevan, entonces yo diría que esta opción solo es posible hasta cierto punto. Al menos tienes suerte ya que el orden de las permutaciones no es importante, suponiendo que las personas puedan recorrer cada ruta en ambas direcciones.


Nota interesante: me di cuenta de que el Ottawa demo que ha proporcionado no está haciendo ningún llamadas AJAX, cuando se solicite para las direcciones. Por lo tanto, hay una buena posibilidad de que estén haciendo lo mismo que se sugirió anteriormente.


ACTUALIZACIÓN:

Aquí se demostración de trabajo mediante el v3 Maps API, que espero pueda ayudarte a empezar:

<!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> 

Captura de pantalla:

Google Maps Campus

+1

El problema que estoy teniendo es doble. Si bien veo definitivamente el mérito de su demostración aquí, y ME ENCANTARÍA que fuera así de simple, la tarea en cuestión requiere que los estudiantes puedan obtener, digamos, de Clase A a Clase B. Las clases se acercan un tanto, y aunque estoy seguro de que podría construir los caminos para la construcción del edificio, me dicen que hay aprox. 50 edificios. Lo he intentado y lo he intentado, y parece que no hay forma de que haga lo ideal, que básicamente sería crear una 'ruta' personalizada que el mapa de Google reconocerá como un área accesible. Es posible que tenga que llegar a las rutas de dibujo a mano. – Douglas

1

¿Por qué no puedes agregar una polilínea para mostrar "en línea recta"?

+1

I pensar cuando el OP dijo que los estudiantes pueden caminar a través de los edificios, se pretendía que pudieran pasar de los senderos estrechos entre edificios. Al menos, así es como parece funcionar el sitio web de demostración. –