Столкнулись на работе с проблемой: нужно на основе API ЯндексКарт сделать сервис, который бы считал стоимость проезда на автомобиле. Наша задача состоит в том, чтобы, напимер, если машина едет из центра Москвы, то тариф один. А если она затем выезжает за пределы МКАД, то тариф другой. Проблема: мы не можем сделать так, чтобы проезд собственно по МКАД считался по тарифу А, а с момента съезда с МКАД и весь путь за его пределами - по тарифу Б. Яндекс же считает путь по МКАД уже путем за его пределами, и поэтому как только машина выезжает на МКАД - у нее включается тариф Б. Посоветуйте решение, пожалуйста!
Добрый вечер. Вопросик: У Вас в автомобилях установлено устройство, которое передает маршрут на Ваш сервер или как? Как я понимаю что это что то типо того...нужно больше информации
Нет, с GPS эта система не связана. Это просто для клиентов, чтобы они могли предварительно посмотреть стоимость. Просто, грубо говоря, калькулятор, где вводишь адреса пункта А и пункта Б, и Яндекс рисует между ними маршрут и говорит, сколько это будет стоить.
Так т.е. у Вас расчет идет по "расстоянию в метрах" которое прописывает яндекс после прокладки маршрута(см. картинку)? Верно? Если нет, то в студию url проекта (в теге CODE) Будем смотреть...
Так...смотрите...вот кусок вашего кода формирования самой карты. А зачем Вам две библиотеки jquery? HTML: function init() { var myMap = window.map = new ymaps.Map('YMapsID', { center: [55.751574, 37.573856], zoom: 9, behaviors: ['drag', 'scrollZoom'] }), tarifs = [{ id: 'moscow', name: 'Москва', label: 'Маршрут по Москве', color: '#0000ff', cost: 0, url: 'http://back.gruzoperevozka1.ru/app/views/js/dc/moscow.json' }, { id: 'mo', name: 'Московская область', label: 'Маршрут за МКАД', cost: 15, color: '#ff0000', url: 'http://back.gruzoperevozka1.ru/app/views/js/dc/mo.json' }], calculator = new DeliveryCalculator(myMap, "Москва, Профсоюзная", tarifs); calculator.setDestination("Москва, Бульвар дмитрия донского"); } Я вот что могу предложить: Применить что то типа этого: HTML: route && myMap.geoObjects.remove(route); route = router; myMap.geoObjects.add(route); // Получаем первый маршрут var way = route.getPaths().get(0), // Маршрут состоит из сегментов. Сегмент - участок маршрута, который нужно проехать // до следующего изменения направления движения. segments = way.getSegments(), moveList = 'Трогаемся,</br>'; for (var i = 0; i < segments.length; i++) { var street = segments[i].getStreet(); moveList += ('Едем ' + segments[i].getHumanAction() + (street ? ' на ' + street : '') + ', проезжаем ' + segments[i].getLength() + ' м.,'); moveList += '</br>' } moveList += 'Останавливаемся.'; $("#list").empty(); // Выводим маршрутный лист $('#list').append(moveList); Ну и соответственно, коли нужно скриптом, то переберете moveList (все для примера...понятно что тут нужно чтобы в нем было только "street " и числовое значение "segments.getLength()") и при переборке осуществляете элементарный регистроЗАВИСИМЫЙ поиск на фразу "МКАД"... Если найдено то к какой нибудь переменной прибавляете просто значение "segments.getLength()", а потом уже итоговую сумму "по мкаду" перемножаете на ваш тариф движения по городу... Что думаете? Самому стало интересно...
Программист говорит насчет двух библиотек вы правы, а насчет кода он пока не уверен. На следующей неделе будем разбирать в подробностях.