Просмотр полной версии : Поиск ближайших метро
ilyamegatron3000
12.06.2019, 11:17
Может кто помочь с реализацией вот такой программы: Пользователь должен ставить метку на карте, после чего ему должны быть представлены ближайшие станции метро. На данный момент я добавил карту и возможность установления метки с получением ее координат, дальше ступор, хелпплз
Alexandroppolus
12.06.2019, 13:41
Допустим, юзер жмякнул карту по координатам {lat, lon}
Ты в цикле перебираешь массив станций метро с их координатами (у тебя ведь есть такой массив, да?), для каждой вычисляешь расстояние от точки, если расстояние меньше некоторого значения, добавляешь в результат.
Для Москвы (широта примерно 60 гр) расстояние вычисляется так:
function distance60(c1, c2) {
return Math.pow(c1.lat - c2.lat, 2) * 4 + Math.pow(c1.lon - c2.lon, 2);
}
это на самом деле квадрат расстояния, в неких абстрактных единицах, просто для того чтобы сравнить с другими.
в неких абстрактных единицах
В градусах в квадрате
Но вы могли просто вычислить угол между двумя прямыми, обе из которых проходят через центр земли, и одна из них через проверяемую станцию, а другая через ваше местоположение.
Очевидно же, чем меньше угол, тем меньше путь до неё!
Alexandroppolus
12.06.2019, 14:36
Но вы могли просто вычислить угол между двумя прямыми, обе из которых проходят через центр земли, и одна из них через проверяемую станцию, а другая через ваше местоположение.
Это "честный" способ, так надо делать, если расстояние сотни км и больше. Но там формула сложнее, с тригонометрией, я как-то решал, теперь сходу даже не вспомню. Для маленьких расстояний можно по простому считать.
https://tech.yandex.ru/maps/jsbox/2.1/reverse_geocode
// Ищем только станции метро.
kind: 'metro',
// Запрашиваем не более 20 результатов.
results: 20
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot