Клуб API Карт

Построение маршрута в Народных картах с помощью JavaScript API 2

ratnikov.ms
20 июля 2012, 21:19

Здравствуйте.

Для обычных карт Яндекса построение маршрута реализуется функцией route:

function getRouteTrack(sLat, sLon, fLat, fLon) {
                           
                            ymaps.route([
                                [sLat, sLon],
                                [fLat, fLon]
                            ]).then(function (route) {
                                var way = route.getPaths().get(0),
                                segments = way.getSegments();
                                var points = [];
                                for (var i = 0; i < segments.length; i++) {
                                    var coords = segments[i].getCoordinates();
                                    points.push(coords);
                                }
                                return points;
                            }, function (error) {
                                return null;
                            });
                        } 

 

В документации по данной функции параметра, определяющего тип карты (обычная или народная) я не обнаружил.

Означает ли это, что функцию route можно использовать равнозначно как для обычных, так и для народных карт?

Просто смущает тот факт, что для функции геокодирования (geocode) такой параметр имеется (provider).

Также, почему то не работает обратное геокодирование для Народных карт:

function geoCodeInvP(lat, lon) {
                            var coords = [lat, lon];
                            ymaps.geocode(coords, { results: 1, provider: 'yandex#publicMap' }).then(function (res) {
                                firstGeoObject = res.geoObjects.get(0);
                                if (firstGeoObject != null)
                                {
                                    addr = firstGeoObject.properties.get('name');
                                }
                                reutn addr;
                            }, function (err) {
                                reutn null;
                          });

 

При том, что прямое геокодирование работает нормально.

 

Заранее благодарю.

С уважением, Михаил.

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

да обратное геокодирование для народных не работает.

Маршрут можно строить на любом слое (народный или спутник) Если нужно (зачем-то) чтобы точки находились именно поиском по народной карте - ищите их сначала народным геокодером, затем передавайте найденные координаты в маршрутизатор

Благодарю за ответ. Ещё один вопросик.

Насколько я понял, при построении маршрута функцией route (единой для всех слоёв), маршрут строится только по дорогам именно Яндекс карт, но не народных. Таким образом, для городов дороги которых прорисованы только в Народных картах (например Есентуки), построить адекватный маршрут не получится. Или всё же есть способ?

Граф дорог у яндекса один и он сам по себе.

Дороги нанесенные в Народных Картах в этот граф не попадают, так что это совсем не связанные вещи