Клуб API Карт

Пару вопросов API 2

gazelleclub
28 июля 2012, 01:34

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

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

 

Едем прямо на улица Карла Маркса, проезжаем 270.47 м.,
Едем левее на Соборная площадь, проезжаем 256.69 м.,
Едем левее на Торговая площадь, проезжаем 112.92 м.,

Как заменит направление на изображения? и так же как метры перевести в км?

7 комментариев
Подписаться на комментарии к посту

 

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

собрать свою базу названий улиц/городов/стран/и т.д. и искать по ней

Как заменит направление на изображения? и так же как метры перевести в км?

Если вы используете маршрутизатор из АПИ, то можно спрашивать у сегмента маршрута getAction вместо getHumanAction и вы получите направление движения на англ. языке, которое можно использовать, например, как имя класса dom-элемента с background-ом ввиде стрелки с направлением движения


Метры перевести в километры можно делением

(270.47 / 1000).toFixed(1)

Покажите пожалуйста на примере как это реализовать имею виду картинки и км

вот мой код

 

  ymaps.route(['Москва, метро Крылатское', 'Москва, метро Молодежная', 'Москва, метро Кунцевская'], {
                mapStateAutoApply:true
            }).then(function (route) {
                  myMap.geoObjects.add(route);
                  $("#resmarshrut").append('Общая длина маршрута: '+route.getHumanLength());
                $("#resmarshrut").append('
Время в пути: '+route.getHumanTime());
                  // Получаем первый маршрут (от метро "Крылатское" до "Молодежная").
                  var way = route.getPaths().get(0),
                      // Маршрут состоит из сегментов. Сегмент - участок маршрута, который нужно проехать
                      // до следующего изменения направления движения.
                      segments = way.getSegments(),
                      moveList = 'Трогаемся,
';
                  for (var i = 0; i < segments.length; i++) {
                      var street = segments[i].getStreet();
                      moveList += ('Едем ' + segments[i].getHumanAction() + (street ? ' на ' + street : '') + ', проезжаем ' + segments[i].getLength() + ' м.,');
                      moveList += '
'
                  }
                  moveList += 'Останавливаемся.';
                  // Выводим маршрутный лист
                  $('#list').append(moveList);
            }, function (error) {
                alert('Возникла ошибка: ' + error.message);
            });
        }

 Очень плохо что в API 2 нет реализации автоматического поиска городов :-( было бы очень удобно. Может есть стороние сервисы через которые можно такое реализовать?

вместо

 

moveList += ('Едем ' + segments[i].getHumanAction() + (street ? ' на ' + street : '') + ', проезжаем ' + segments[i].getLength() + ' м.,');
                      moveList += '
'

нужно чтото типа этого

 

moveList += ' + (street ? ' на ' + street : '') + ', проезжаем ' + segments[i].getHumanLength());
                      moveList += '
'

 

Подправил маленько, а то лезла ошибка получилось так

 

moveList += ('Едем ' + (street ? ' на ' + street : '') + ', проезжаем ' + segments[i].getLength() + ' м.,');
                      moveList += '
'

Но появилась проблема это с обозначением правее и левее эти названия идут с пробелом slight left и slight right и естественно картинка не отображается

Как тут быть??

ну замените пробел на педаль

segments[i].getAction().replace(' ', '_');

Подскажите пожайлуста - а что означает символ $ в строке ("#resmarshrut").append('Общая длина маршрута: '+route.getHumanLength());