|
1с 8.3 + JSON yandex расстояние между двумя точками. | ☑ | ||
---|---|---|---|---|
0
memogolik
07.12.16
✎
12:10
|
День добрый. Вопрос такой.
Есть пример из яндекса: https://geocode-maps.yandex.ru/1.x/?format=json&geocode=Москва,%20улица%20Новый%20Арбат,%20дом%2024 Данные выводятся в формате JSON. Все отлично, можно подцепить 1Ской. Но это геокодинг, т.е. просто по адресу получить координату. А вот примера где по паре адресов(координат) можно получить в json формате расстояние между этими координатами найти не могу. Если есть знатоки, подскажите пожалуйста. Заранее спасибо. |
|||
1
DrShad
07.12.16
✎
12:20
|
||||
2
DrShad
07.12.16
✎
12:23
|
хотя нет немного не то
|
|||
3
DrShad
07.12.16
✎
12:23
|
тебе какое именно расстояние нужно? по прямой?
|
|||
4
DrShad
07.12.16
✎
12:27
|
&НаСервере
Функция ПосчитатьРасстояние(Широта1, Долгота1, Широта2, Долгота2) скрипт = Новый COMОбъект("MSScriptControl.ScriptControl"); скрипт.Language="jscript"; скрипт.AddCode("function latlng2distance(lat1, long1, lat2, long2) { |//радиус Земли |var R = 6372795; | |//перевод коордитат в радианы |lat1 *= Math.PI / 180; |lat2 *= Math.PI / 180; |long1 *= Math.PI / 180; |long2 *= Math.PI / 180; | |//вычисление косинусов и синусов широт и разницы долгот |var cl1 = Math.cos(lat1); |var cl2 = Math.cos(lat2); |var sl1 = Math.sin(lat1); |var sl2 = Math.sin(lat2); |var delta = long2 - long1; |var cdelta = Math.cos(delta); |var sdelta = Math.sin(delta); | |//вычисления длины большого круга |var y = Math.sqrt(Math.pow(cl2 * sdelta, 2) + Math.pow(cl1 * sl2 - sl1 * cl2 * cdelta, 2)); |var x = sl1 * sl2 + cl1 * cl2 * cdelta; |var ad = Math.atan2(y, x); |var dist = ad * R; //расстояние между двумя координатами в метрах | |return dist |} |"); ВозвращаемоеЗначение=скрипт.Modules.Item("Global").CodeObject.latlng2distance(Число(Широта1), Число(Долгота1), Число(Широта2), Число(Долгота2)); Возврат ВозвращаемоеЗначение; КонецФункции |
|||
5
Zapal
07.12.16
✎
12:53
|
теорема Пифагора, не?
|
|||
6
Jija Grenkov
07.12.16
✎
12:56
|
(5) Не
|
|||
7
Zapal
07.12.16
✎
13:11
|
(6) а мне кажется что если речь о координатах в пределах одного города то прокатит. Оценить сколько километров в одном градусе и считать
|
|||
8
memogolik
07.12.16
✎
14:13
|
расчет должен быть не напрямую между точками а через яндекс API.
Ответ от яндекса должен быть в виде json или хотя бы xml. |
|||
9
DrShad
07.12.16
✎
14:17
|
(8) ну тогда (1), вот только какого джейсона ты ожидаешь? там тупо расстояние в цифрах
|
|||
10
DrShad
07.12.16
✎
14:18
|
ну и без самой карты как объекта не обойтись
|
|||
11
memogolik
07.12.16
✎
14:34
|
(10) https://s.mail.ru/4QdM/VdqBfd9xf тут же он рассчитывает. Как из 1Ски выцепить расстояние?
|
|||
12
Jija Grenkov
07.12.16
✎
14:45
|
(7) 1 градус по широте и 1 градус по долготе в общем случае разное расстояние, посмотрите на сетку широт и долгот, по тиореме пифагоора результат будет очень далекий от правильного, можно разве что поправочные коэфициенты ввести, но лучше уже посчитать по праильной формуле.
(8) В (1) что не устраивает. У гугла должна быть матрица расстояний. Но эти сервисы обычно делают более грубы расчет по сравнению с ручным вызовом карты. Вот я когда-то делал обработку, сама вк там бажная с момента заливки на инфостарта она была практически полностью переписана, но в обработке должно быть получени рассчтояния |
|||
13
Jija Grenkov
07.12.16
✎
14:46
|
||||
14
Zapal
07.12.16
✎
14:47
|
(11) если ты собрался рассчитывать оптимальные маршруты то обломись
яндекс запрещает использование этого своего сервиса в коммерческих целях, а у гугла надо платить можно попробовать опенстритмап |
|||
15
DrShad
07.12.16
✎
14:51
|
(14) на двух точках посчитать оптимальный маршрут вообще не проблема
|
|||
16
DrShad
07.12.16
✎
14:52
|
(11) а карту ты там видишь? без нее никак
|
|||
17
DrShad
07.12.16
✎
14:52
|
+(16) ну а как считает и как получить результат описано в (1)
|
|||
18
Zapal
07.12.16
✎
15:01
|
(15) мы тут конечно уходим в область домыслов, но подозреваю что автор хочет оценить все возможные пути между несколькими адресами и методом простого перебора выбрать лучший
|
|||
19
DrShad
07.12.16
✎
15:03
|
(18) простым перебором не получится, а методом полного перебора и расчета не по прямой, а по карте уже на 6-ти точках очень долго
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |