Клуб API Карт

Правовой и технический вопрос: использование геокодера и route из php скрипта

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

Есть сайт интернет магазина. Стоимость доставки высчитывается исходя из расстояния. Предполагается следующий алгоритм:

 

1. Пользователь вводит адрес

2. PHP скрипт получает координаты от геокодера

3. PHP скрипт получает расстояние от точки вывоза до точки пользователя

4. Юзеру выводится стоимость доставки

 

Вопрос 1: можно ли с помощью PHP получать расстояние пути от одной точки до другой? т.е. использовать функционал route вне js

Вопрос 2: легально ли будет исползование api из PHP без показа карты?

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

1. нет, http-интерфейса к маршрутизатору в данный момент нет

2. нет, использование геокодера без показа карты на сайте это нарушение условий использования АПИ

Спасибо за ответ. Значит подойдёт только такой вариант?

 

1. Пользователь вводит адрес

2. Ему показывается карта с маршрутом

3. Длина маршрута в зашифрованном виде отправляется в PHP (иначе пользователь сможет изменить цену доставки)

я бы не делал никаких "зашифрованных видов", все это шифрование – никому не нужный велосипед, который вам придется написать на клиенте, – а то что ниписано на клиенте сами знаете – доступно всем.

Отправляйте на сервер координаты нитки маршрута, а на сервере считайте длину, какой-нибудь спец-либой типа GEOS, кажется я видел для нее биндинг на php

длина нужна именно дороги, а не линии от точки до точки

Я и не предлагаю считать длину между 2 точками, считайте ее между всеми точками ломаной. В Маршрутизаторе так и сделано, с рулеткой по дорогам у нас никто не бегал )

проблема в том, что массив точек, передаваемый на сервер, точно так же можно подделать :)

В этом нет смысла, т.к. доставка при этом случится не туда )

Какую-нибудь промежуточку точку удалить например.

Хотя даже если изменить точку доставки, то PHP скрипт об этом не узнает, ведь использование геокодера без карт запрещено :)

ну раз теперь вы показываете карту с маршрутом, можно и геокодировать из php

Кстати, линию маршрута можно отправлять в виде base64 строки

https://tech.yandex.ru/maps/doc/jsapi/2.1-dev/ref/reference/geometry.LineString.toEncodedCoordinates-docpage/

Вот вам и шифрование из коробки )

Спасибо за информацию!