Клуб API Карт

Расчет расстояния от точки до множества объектов

Пост в архиве.

Доброго времени суток. Есть задачька и нужен совет в ее реализации.

Есть координаты места расположения пользователя. На карту выводиться множество кафе и ресторанов. В информационной панели дублируються все точки которые нанесены на карту, описание, фото и в то же время нужно выводить растояние к ним. Одновременно может выводиться свыше 500 элементов. Для начала можно искать для ближайших 10-20 объектов их растояние, но даже в этом случаи смущает, что нужно делать 10-20 запросов на прокладку маршрута.

Есть ли способ задать точку на карте и все точки к которым нужно расчитать растояние и выполнить это одним запросом, маршрут при этом прокладывать не обязательно?

7 комментариев

Выводите расстояние по прямой. В случае ближайших объектов погрешность не будет большой

Для точек в доль маршрута такой способ еще можно пременить, так как есть сегменты. Можно узнать к какаому сегменту относиться точка. В таком случаии вычислить Растояние проезда до начала сегмента + растояние по прямой до точки в сегменте.

Но  вот с точками в городе возможна большая погрешность. Пример: Есть 2 дороги между ними гора, по прямой 10 метров, но дойти или доехать 2.5км в объезд, а в 150 метрах есть другое кафе.

В теме http://clubs.ya.ru/mapsapi/replies.xml?item_no=24619 говорил что возможно добавят хэлпер, его добавили?

Насколько понимаю GeoQueryResult.sortByDistance расчитывая растояние по праямой для сортировки?

наверное я нашел ответ на данный вопрос 

coordSystem.cartesian.getDistance(point1, point2)

cartesian это не то.

Вам нужно coordSystem.geo.getDistance,

или еще лучше получать систему координат из вашей проекции карты

var coordSystem = myMap.options.get('projection').getCoordSystem();

coordSystem.getDistance(...)

Спасибо!

да, по прямой