Список автобусных остановок из Google Maps

Я пытаюсь создать веб-приложение, в котором вы вводите свой адрес, и оно даст вам список автобусных остановок в вашем районе. Я хочу использовать Google Maps для этого, но я не могу найти способ использовать их для этого. Есть ли способ получить список точек на картах, скажем, в формате JSON или XML? Я попробовал Google Maps Places API, но это не сработало. Единственное, что я нашел, это этот пример - http://gmaps-samples-v3.googlecode.com/svn/trunk/localsearch/places.html, но это не то, что мне нужно.

Итак, кто-нибудь знает?


person Pirozek    schedule 21.08.2011    source источник


Ответы (5)


Для этого можно использовать Google Fusion Tables. Однако вам придется ввести данные самостоятельно, если только кто-то еще не ввел их. API карт Google поддерживает Google Fusion Tables.

person johansalllarsson    schedule 21.08.2011
comment
Ну, это противоположно тому, что мне нужно. Это данные -> точки на карте, а мне нужны точки на gmap -> данные :) Но спасибо за подсказку, не знаю насчёт этого проекта. - person Pirozek; 22.08.2011
comment
Похоже, вам нужны данные (есть ли способ получить список точек на картах, скажем, в формате JSON или XML?). Если у вас уже есть данные и вам нужно экспортировать их в json или xml, это было бы довольно просто? Или я просто устал читать :) - person johansalllarsson; 22.08.2011
comment
Ок, может я неправильно написал. Мне нужно получить данные ОТ gmap. У меня есть только адрес, и мне нужно получить список автобусных остановок рядом с этим адресом. - person Pirozek; 22.08.2011
comment
Вы не можете получить список автобусных остановок, просто введя адрес из Google Maps API. Этих данных нет по умолчанию. Лучше всего было бы взглянуть на Google Fusion Tables, открытые данные (google.com/search ?q=open+data) или выполнить поиск информации. - person johansalllarsson; 22.08.2011
comment
Как описано, support.google.com/fusiontables/answer/ Таблицы Google Fusion Tables могут быть недоступны. - person ChandraMouli Poreddy; 21.12.2019

В Google Places API есть информация об остановке, но вам нужно очень конкретно сформировать запрос, чтобы он работал.

Ключ использует поиск поблизости с rankby = расстояние и радиус = и типы = автобусная_станция

Ранжирование по умолчанию редко показывает автобусные станции.

Пример запроса:

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

person Tyler    schedule 20.12.2012
comment
я думаю, это только для автобусных СТАНЦИЙ, а не для автобусных остановок. Хотя не совсем в этом уверен - person boulder_ruby; 04.08.2014
comment
РЕДАКТИРОВАТЬ: Нет, только автобусные станции. Не автобусные остановки. Хотя гораздо лучше, чем ничего - person boulder_ruby; 05.08.2014

Это не услуга, которую предоставляет Google. У них, конечно, есть все, что вам нужно, в документации, но они делают все свои расчеты внутри компании.

Один из вариантов (который может быть немного сложным) — изучить расписание общественного транспорта до их автобусных остановок. Это может быть вариант, если у вас есть небольшой регион (например, город), который должно поддерживать ваше веб-приложение. Это рискованно, потому что если страницы изменятся, вам придется перенастроить приложение для интеллектуального анализа данных, но у вас все равно возникнет та же проблема при попытке извлечь данные из Google (или откуда-то еще) — если бы вы могли найти способ получить список автобусных остановок с местоположениями и построить на его основе свое приложение, оно может измениться в любое время и нарушить работу вашего приложения.

person JSideris    schedule 21.08.2011
comment
Мне не нужны расписания, только автобусные остановки с их широтой и долготой. У меня есть другое приложение для расписаний, но я не хочу майнить все автобусные остановки вручную :) Но вы правы, когда создаете приложение для майнинга. - person Pirozek; 21.08.2011

Я думаю, это может помочь вам

<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>
person Ali Seify    schedule 24.09.2016

Ответ Али Сейфи правильный, за исключением того, что в документе API указано, что только первый элемент в параметре типов будет использоваться API, а тип transit_station является правильным типом для автобусной остановки.

Кроме того, чтобы добраться до ближайшей автобусной остановки, рекомендуется использовать параметр rankBy: google.maps.places.RankBy.DISTANCE, а параметр radius в этом случае использовать нельзя.

service.nearbySearch({
  location: pyrmont,
  rankBy: google.maps.places.RankBy.DISTANCE,
  types: ['transit_station']

}, callback);
person Software Tailor    schedule 30.11.2019