как узнать ближайшую станцию метро по адресу
Как узнать ближайшую станцию метро к определённому адресу?
Я парсю адреса московских библиотек. Как мне в 2018 году по адресу получить одну ближайшую станцию метро?
JS API карт последней версии на данный момент
Илья, можно на стороне клиента получить данные и передать их на сервер. Потом периодически обновлять.
Либо реализовать через php с использованием curl, например. Посмотрите что происходит в Network, какие запросы уходят, на какие адреса, попробуйте их повторить.
Станций метро конечное число, я складывал их координаты в базу, а потом по методу гипотенузы вычислял расстояния в попугаях от нужной точки до разных станций и брал ближайшие в определенном радиусе.
Даже можно без базы решить, будет еще быстрее и более автономно. Даже без бэкенда можно, если на то пошло.
При помощи https://developers.google.com/places/supported_typ. получите список всех станций в нужном радиусе, сохраните это все в БД. Будут у вас станции о координаты.
Далее передаете адрес библиотеки и получите координаты, тоже соберите это все в БД.
https://maps.googleapis.com/maps/api/geocode/json.
Далее передаете координаты метро и библиотеки вот этой функции и она вам вернет расстояние.
Можно запариться и при помощи Google Matrix API просчитать сколько пешком топать и сколько на машине ехать.
Илья, у вас есть адрес библиотеки, верно? я же вам сказал как получить все станции метро.
Далее при помощи функции указанной выше просчитывайте расстояние от библиотеки на станции.
inside22, почему-то в Википедии какие-то другие координаты метро — определил сам через Геокодер Гугла, записал в БД.
Для вычисления расстояния использовал Google Distance Matrix API, но у них бесплатно ограниченное количество запросов, поэтому перешёл на формулу Хаверсина.
Спасибо за ваши советы, именно они привели меня к решению.
Решение добавил ответом на этот вопрос.
Илья, я вот как делал, сначала при помощи хаверсина находил несколько самых ближайших точек, а потом уже именно эти 2-3 самые ближайшие точки просчитывал при помощи Google Distance Matrix API.
Хотя, список метро и список библиотек очень редко меняется, вы можете просто в скрипте поставить sleep(5) на 5 секунд и один раз обработать все точки при помощи Google Distance Matrix API и будет вам счастье.
Находим расстояние до ближайших станции метро
Мне в работе с одним из сайтов недвижимости нужно было сделать функционал который для заданной точке на карте города ищет ближайшие станции метро и рассчитывает расстояние до них. Все это должно отрабатывать на PHP скрипте которому передается через аякс адрес, который он обрабатывает и возвращает только 3 станции метро и расстояние до них (как к примеру в Яндекс картах), также рассчитывает время пешком до метро.
Список станций метрополитена
API возвращает список станций с группировкой по веткам метро в формате JSON, также он отдает и цвет линии, что очень удобно.
Хранить данные мы будем в MySQL в двух таблицах, станции и линии метро. Примерная структура таблиц такая:
Скрипт для импорта станций метро выглядит примерно так:
Находим координаты нужного объекта
Для того чтобы определить ближайшие станции метро нам нужно определить сначала координаты для нашего объекта, зная его адрес. Для это отправим запрос к геокодеру Яндекса.
Находим ближайшие станции метро
Дальнейшим нашим действием будет рассчитать какие станции метро находятся в круге с нужным нам радиусом точнее, для простоты расчетов, квадрате см. рис 1.
Рассчитываем расстояние до метро
Метод distance для расчета расстояния между двумя точками на карте:
И на последок функция для загрузки страницы с помощью cURL:
Пример использования
Скрипт для нахождения ближайших станций метрополитена готов. Ниже пример как его можно использовать:
На этом все, класс и готовый пример можете скачать внизу по ссылке. Если будут вопросы или предложения пишите в комментариях.
Поиск ближайшей станции метро с помощью php
В одном проекте, с которым пришлось столкнуться по долгу службы, клиент решил немного упростить жизнь гастарбайтеров-курьеров, которые занимаются доставкой товаров из интернет-магазина по Москве. Чтобы ребятам, плохо ориентирующимся в карте столицы, было проще и быстрее добираться до адресата, в путевом листе, помимо адреса, решили указывать ближайшую станцию метро. По задумке клиента, данное нововведение должно повысить скорость доставки и снизить процент потерявшихся курьеров на московских изогнутых улицах.
Путевой лист должен формироваться на сервере – это и стало основной проблемой. Раньше работать с адресами и прочими элементы карты, приходилось только на клиентской стороне. То есть все возможные манипуляции с объектами карты осуществлялись с помощью js и как реализовать подобный функционал на сервере не понятно.
Яндекс карты и http-запросы
Все оказалось предельно просто. У яндекса есть замечательный сервис «геокодирование» от яндекс карт, который позволяет делать http-запросы к своим api. Сервис позволяет определять координаты и получать информацию об объектах расположенных на яндекс картах. Подробнее можно почитать тут: документация. Данных, предоставляемых яндексом, вполне достаточно, чтобы решить задачку, подкинутую клиентом.
Получение координат адреса с помощью php
Api яндекса позволяют получать данные как в формате xml, так и json. Работать с json-он мне удобнее, поэтому в примерах используется именно он.
Чтобы получить ближайшую станцию метро, необходимо передать в api координаты точки на карте. Координаты должны быть в формате «долгота, широта». Но в базе данных с заказами нет такой информации, есть только адрес. Поэтому необходимо сделать предварительный запрос и получить координаты точки по определенному адресу. Сделать это можно вот так:
Получение ближайшей станции метро с помощью php
Теперь, имея координаты адресата, можно получить адрес и название ближайшего метро. В примере ниже, показано определение только названия станции. Но у вас не составит ни какого труда получить и другую информацию о метро, достаточно только вытащить нужные значения из массива данных, который отдает api. Также в запросе можно изменить или вовсе не использовать параметр «results», который определяет количество найденных объектов. Мне было нужно найти только одну станцию, поэтому в примере results равен 1.
Поиск ближайшей станции метро по адресу с помощью php
И остается только привести пример использования двух, описанных выше, функций. Возьмем для примера адрес «Петровки 38» и найдем ближайшую к ней станцию метро. Возможно кому-нибудь, спешно покидающему здание МВД, пригодится эта информация.
Послесловие
Яндекс установил лимит на количество обращений к своему сервису, он составляет 25 тысяч запросов в сутки. Это большой запас и его будет достаточно для многих сайтов или сервисов. Но если этого количества вам будет не достаточно, то всегда можно воспользоваться платной версией api, подробнее можно почитать тут.
Карта Москвы с указанием расположения станций и линий метро
Экскурсии | Отели | Горящие туры | Промокоды | Петербург | Москва | День Города в Москве
В большинстве случаев метро является наиболее быстрым, удобным, безопасным и относительно дешёвым способом передвижения по городу Москва.
На интерактивной карте города указано расположение станций и линий Московского метрополитена. Вы можете увидеть, где расположена интересующая вас станция или найти станцию метро, ближайшую к нужному вам месту (уточнить, как пройти или проехать к этому месту).
Перечень станций вы найдёте в расположенном справа от карты меню. Выберите название нужной вам станции метро в перечне станций справа от карты. На карте вы сможете увидеть расположение этой станции метро и ближайшие улицы. Ниже карты размещена информация, какие станции московского метро расположены ближе всего к некоторым достопримечательностям и важным местам в Москве.
Вы можете также найти нужное вам место на карте Москвы или ближайшую к этому месту станцию метро воспользовавшись сервисом поиска. Введите название объекта или нужный вам адрес.
Если вы зашли на сайт используя планшет или мобильный телефон, возможно вам будет удобнее упрощённая версия карты для мобильных устройств.
Загрузка карты и сведений о станциях займёт некоторое время. Пожалуйста, подождите.
Отправьтесь на экскурсию по Москве (выбирайте здесь). Салют в День Москвы.
Ближайшие станции метро Москвы к некоторым объектам
Охотный ряд, Библиотека имени Ленина. | Кремль, Красная Площадь, Исторический музей, торговый центр «Охотный Ряд». |
Станция метро Третьяковская. | Третьяковская галерея. |
Театральная, Площадь Революции, Кузнецкий мост. | Большой театр. |
Станция метро Университет. | Московский государственный университет. |
Станция метро Комсомольская. | Ленинградский, Ярославский и Казанский вокзалы. |
Станция метро Киевская. | Киевский вокзал, торговый центр Европейский. |
На карте могут быть неточности, в связи с высоким темпом строительства метро. Приносим извинения.
Некоторые из видов билетов на метро Москвы
Электронная карта ”Тройка”. Пластиковая электронная карта стоимостью 50 рублей плюс стоимость поездок. Стоимость поездки в метро по карте составляет от 28 рублей до 50 рублей (зависит от количества единовременно оплаченных поездок). Счёт на карте можно при необходимости пополнять. Залог можно вернуть при возврате карты в кассу.
Билет “Единый”. Билет действителен для метро и для поездок на наземном транспорте (автобус, трамвай, троллейбус). Стоимость билета на 1 поездку цена 50 рублей (2 поездки – 100, 20 поездок – 650 руб. и.т.д.).