2011-08-21 21 views
5

Estoy tratando de crear una aplicación web donde ingrese su dirección y le dará una lista de paradas de autobús en su área. Quiero utilizar Google Maps para esto, pero no puedo encontrar la manera de usarlos para esto. ¿Hay alguna manera de obtener una lista de puntos en los mapas en, digamos, formato JSON o XML? Intenté Google Maps Places API, pero no funcionó de esta manera. Lo único que encontré es este ejemplo: http://gmaps-samples-v3.googlecode.com/svn/trunk/localsearch/places.html, pero eso no es lo que necesito.Lista de paradas de autobús de Google Maps

Entonces, ¿alguien sabe?

Respuesta

1

Puede usar Google Fusion Tables para esto. Sin embargo, usted debería ingresar los datos usted mismo, a menos que alguien más ya los haya ingresado. Google Maps API es compatible con Google Fusion Tables.

+0

Bueno, esto es lo opuesto a lo que necesito. Esto es datos -> puntos en el mapa, pero necesito puntos en gmap -> datos :) Pero gracias por la propina, no sé sobre este proyecto. – Pirozek

+0

Sonó como si necesitara datos ("¿Hay alguna manera de obtener una lista de puntos en los mapas, digamos, en formato JSON o XML?"). Si ya tiene los datos y necesita exportarlos a json o xml, ¿sería sencillo? O tal vez estoy demasiado cansado para leer :) – johansalllarsson

+0

Ok, tal vez lo escribí mal. Necesito obtener datos de gmap. Solo tengo una dirección y necesito obtener una lista de paradas de autobús cerca de esa dirección – Pirozek

2

Este no es un servicio que proporciona Google. Seguramente tienen todo lo que necesita en el registro, pero hacen todos sus cálculos internamente.

Una opción (que puede ser un poco difícil) es extraer los horarios de transporte público para sus paradas de autobús. Podría ser una opción si tiene una región pequeña (es decir, una ciudad) que su aplicación web debe admitir. Es arriesgado porque si las páginas cambian, tendrá que volver a configurar la aplicación de minería de datos, pero igual tendrá el mismo problema al intentar extraer los datos de Google (o de otro lugar); si podría, encuentre una manera de obtener una lista de paradas de autobús con ubicaciones y construir su aplicación a su alrededor, podría cambiar en cualquier momento y romper su aplicación.

+0

No necesito horarios, paradas de autobús justo con su lat y lng. Tengo otra aplicación para los horarios, pero no quiero extraer todas las paradas de autobús manualmente :) Pero tienes razón con la creación de aplicaciones para minería suave – Pirozek

1

La API de Google Places tiene información de detención allí, pero debe formular su consulta muy específicamente para que funcione.

La clave es usar la búsqueda cercana con rankby = distancia y radio = = y tipos bus_station

La prominencia rankby predeterminado rara vez muestra las estaciones de autobuses.

Consulta de ejemplo:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=49.89458,-97.14137&sensor=true&key=your_key&rankby=distance&types=bus_station

+1

esto es solo para estaciones de autobuses, creo, no paradas de autobús. No del todo seguro de eso, aunque –

+0

no importa, parece que también funciona para las paradas de autobús ... ya veremos ... –

+1

EDITAR: No, solo las estaciones de autobuses. No el autobús se detiene. Mucho mejor que nada, aunque –

0

creo que le puede ayudar a

<script> 
    // This example requires the Places library. Include the libraries=places 
    // parameter when you first load the API. For example: 
    // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"> 

    var map; 
    var infowindow; 

    function initMap() { 
    var pyrmont = {lat: 38.06908229560463, lng: 46.31730562744135}; 

    map = new google.maps.Map(document.getElementById('map'), { 
     center: pyrmont, 
     zoom: 15 
    }); 

    infowindow = new google.maps.InfoWindow(); 
    var service = new google.maps.places.PlacesService(map); 
    service.nearbySearch({ 
     location: pyrmont, 
     radius: 1000, 
     types: ['bus_station','transit_station'] 

    }, callback); 
    } 

    function callback(results, status) { 
    if (status === google.maps.places.PlacesServiceStatus.OK) { 
     for (var i = 0; i < results.length; i++) { 
     createMarker(results[i]); 
     } 
    } 
    } 

    function createMarker(place) { 
    var placeLoc = place.geometry.location; 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: place.geometry.location 
    }); 

    google.maps.event.addListener(marker, 'click', function() { 
     infowindow.setContent(place.name); 
     infowindow.open(map, this); 
    }); 
    } 
</script>