Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.06.2019, 11:17
Новичок на форуме
Отправить личное сообщение для ilyamegatron3000 Посмотреть профиль Найти все сообщения от ilyamegatron3000
 
Регистрация: 12.06.2019
Сообщений: 1

Поиск ближайших метро
Может кто помочь с реализацией вот такой программы: Пользователь должен ставить метку на карте, после чего ему должны быть представлены ближайшие станции метро. На данный момент я добавил карту и возможность установления метки с получением ее координат, дальше ступор, хелпплз
Ответить с цитированием
  #2 (permalink)  
Старый 12.06.2019, 13:41
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Допустим, юзер жмякнул карту по координатам {lat, lon}
Ты в цикле перебираешь массив станций метро с их координатами (у тебя ведь есть такой массив, да?), для каждой вычисляешь расстояние от точки, если расстояние меньше некоторого значения, добавляешь в результат.

Для Москвы (широта примерно 60 гр) расстояние вычисляется так:
function distance60(c1, c2) {
    return Math.pow(c1.lat - c2.lat, 2) * 4 + Math.pow(c1.lon - c2.lon, 2);
}


это на самом деле квадрат расстояния, в неких абстрактных единицах, просто для того чтобы сравнить с другими.
Ответить с цитированием
  #3 (permalink)  
Старый 12.06.2019, 14:10
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Alexandroppolus
в неких абстрактных единицах
В градусах в квадрате

Но вы могли просто вычислить угол между двумя прямыми, обе из которых проходят через центр земли, и одна из них через проверяемую станцию, а другая через ваше местоположение.

Очевидно же, чем меньше угол, тем меньше путь до неё!

Последний раз редактировалось Malleys, 12.06.2019 в 14:17.
Ответить с цитированием
  #4 (permalink)  
Старый 12.06.2019, 14:36
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от Malleys
Но вы могли просто вычислить угол между двумя прямыми, обе из которых проходят через центр земли, и одна из них через проверяемую станцию, а другая через ваше местоположение.
Это "честный" способ, так надо делать, если расстояние сотни км и больше. Но там формула сложнее, с тригонометрией, я как-то решал, теперь сходу даже не вспомню. Для маленьких расстояний можно по простому считать.
Ответить с цитированием
  #5 (permalink)  
Старый 12.06.2019, 14:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

https://tech.yandex.ru/maps/jsbox/2.1/reverse_geocode

Цитата:
// Ищем только станции метро.
kind: 'metro',
// Запрашиваем не более 20 результатов.
results: 20
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать поиск со стороннего сайта kozlik Работа 1 19.09.2014 12:23
Живой поиск JQUERY + AJAX + PHP + MYSQL dimi007 AJAX и COMET 2 22.07.2014 13:50
select отключить встроенный поиск skynet-mfd jQuery 0 04.03.2013 11:26
Поиск в тексте javascript jQuery 3 31.05.2011 11:40
PagingToolbar и поиск DenQ ExtJS 5 02.11.2010 00:16