Клуб API Карт

как сделать, чтобы заработал ymaps.route?

m.medok
22 октября 2014, 13:50

Это совмещение двух примеров из песочницы - мкад и расчет стоимости доставки. ymaps.route  начинает работать, когда его вставишь в function init(), и то кривовато

 

 

/////////////////////////// если поиск

ptp.getDirection = function () {

    if (this._route) {

        this._map.geoObjects.remove(this._route);

    }

    ////////////////////старт финиш

    if (this._start && this._finish) {

        var self = this,

            start = this._start.geometry.getCoordinates(),

            finish = this._finish.geometry.getCoordinates();

//поиск

ymaps.geocode(start, { results: 1 })

            .then(function (geocode) {

                var address = geocode.geoObjects.get(0) &&

                    geocode.geoObjects.get(0).properties.get('balloonContentBody') || '';

//////////////////////конец из прим. расчет1-2

  /////////////////////////////////прокладка маршрута   

  ymaps.route([start, finish])

                    .then(function (router) {

                // Объединим в выборку все сегменты маршрута.

                var pathsObjects = ymaps.geoQuery(router.getPaths()),

                    edges = [];  

                // Переберем все сегменты и разобьем их на отрезки.

                pathsObjects.each(function (path) {

                    var coordinates = path.geometry.getCoordinates();

                    for (var i = 1, l = coordinates.length; i < l; i++) {

                        edges.push({

                            type: 'LineString',

                            coordinates: [coordinates[i], coordinates[i - 1]]

                        });

                    }

                });                

                // Создадим новую выборку, содержащую:

                // - отрезки, описываюшие маршрут;

                // - начальную и конечную точки;

                // - промежуточные точки.

                var routeObjects = ymaps.geoQuery(edges)

                        .add(router.getWayPoints())

                        .add(router.getViaPoints())

                        .setOptions('strokeWidth', 3)

                        .addToMap(myMap),

                    // Найдем все объекты, попадающие внутрь МКАД.

                    objectsInMoscow = routeObjects.searchInside(moscowPolygon),

                    // Найдем объекты, пересекающие МКАД.

                    boundaryObjects = routeObjects.searchIntersect(moscowPolygon);

                // Раскрасим в разные цвета объекты внутри, снаружи и пересекающие МКАД.

                boundaryObjects.setOptions({

                    strokeColor: '#06ff00',

                    preset: 'twirl#greenIcon'

                });

                objectsInMoscow.setOptions({

                    strokeColor: '#ff0005',

                    preset: 'twirl#redIcon'

                });

                // Объекты за пределами МКАД получим исключением полученных выборок из

                // исходной.

                routeObjects.remove(objectsInMoscow).remove(boundaryObjects).setOptions({

                    strokeColor: '#0010ff',

                    preset: 'twirl#blueIcon'

                });      

            } );////////////////////////////конец прокладка маршрута

       

   

    //////////////////из прим. расчет1-3

   ////

            });//конец поиск

        self._map.setBounds(self._map.geoObjects.getBounds())

    }

    ////////////////////// конец старт финиш

};

///////////////////конец если поиск

 

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

а где можно скачать файл mo.json или что в нем прописать. Может быть я как-то не правильно пример скачал? Скачивал через IE

mo.json у меня получилось прописать, всё заработало... Огромная Вам благодарность!!! Один вопрос остался. Гдеь нарисовать многоугольник и скопировать его координаты???

я делал это на карте, с помощью консоли браузера.

Создаете карту, сохранив ее переменную в window.map,

затем открываете консоль браузера и создаете полигон.

Добавляете в консоли его на карту и включаете ему режим редактирования

http://api.yandex.ru/maps/jsbox/2.1/polygonEditor

 

Когда вы закочите редактировать, выводите геометрию (координаты) полигона в консоль и копируете в буфер

console.log(JSON.stringify(myPolygon.geometry.getCoordinates()))

 

отлично, разобрался...благодарю[:]|||||||||[:]

я сделал так как вы написали, и когда рисую многоугольник и становится много точек google chrome дает ошибку "опаньки", страницу нужно обновить, перезагружаю и многоугольник исчезает. Не могу дорисовать этот полигон. Что делать????