Часто возникает задача проложить маршрут между заданными точками, а затем проанализировать, в какие области или города попадают сегменты этого маршрута. В данном примере по заранее подготовленным данным создается многоугольник, описывающий МКАД. После получения маршрута делается проверка на попадание его сегментов в этот многоугольник с помощью метода searchInside.
С помощью объекта GeoQueryResult можно задавать опции или данные сразу группе геообъектов. Здесь показано, как сегменты маршрута, лежащие внутри и снаружи кольцевой автодороги, раскрашиваются в разные цвета.
\n\n\n","route_inside_polygon.js":"ymaps.ready(init);\n\nfunction init() {\n var myMap = new ymaps.Map(\"map\", {\n center: [55.73, 37.75],\n zoom: 9\n }, {\n searchControlProvider: 'yandex#search'\n }),\n moscowPolygon;\n \n function onPolygonLoad (json) {\n moscowPolygon = new ymaps.Polygon(json.coordinates);\n // Если мы не хотим, чтобы контур был виден, зададим соответствующую опцию.\n moscowPolygon.options.set('visible', false);\n // Чтобы корректно осуществлялись геометрические операции\n // над спроецированным многоугольником, его нужно добавить на карту.\n myMap.geoObjects.add(moscowPolygon);\n \n ymaps.route([[55.654884,37.527034], [55.767305,37.976100]]).then(\n function (res) {\n // Объединим в выборку все сегменты маршрута.\n var pathsObjects = ymaps.geoQuery(res.getPaths()),\n edges = [];\n \n // Переберем все сегменты и разобьем их на отрезки.\n pathsObjects.each(function (path) {\n var coordinates = path.geometry.getCoordinates();\n for (var i = 1, l = coordinates.length; i < l; i++) {\n edges.push({\n type: 'LineString',\n coordinates: [coordinates[i], coordinates[i - 1]]\n });\n }\n });\n \n // Создадим новую выборку, содержащую:\n // - отрезки, описываюшие маршрут;\n // - начальную и конечную точки;\n // - промежуточные точки.\n var routeObjects = ymaps.geoQuery(edges)\n .add(res.getWayPoints())\n .add(res.getViaPoints())\n .setOptions('strokeWidth', 3)\n .addToMap(myMap),\n // Найдем все объекты, попадающие внутрь МКАД.\n objectsInMoscow = routeObjects.searchInside(moscowPolygon),\n // Найдем объекты, пересекающие МКАД.\n boundaryObjects = routeObjects.searchIntersect(moscowPolygon);\n // Раскрасим в разные цвета объекты внутри, снаружи и пересекающие МКАД.\n boundaryObjects.setOptions({\n strokeColor: '#06ff00',\n preset: 'islands#greenIcon'\n });\n objectsInMoscow.setOptions({\n strokeColor: '#ff0005',\n preset: 'islands#redIcon'\n });\n // Объекты за пределами МКАД получим исключением полученных выборок из\n // исходной.\n routeObjects.remove(objectsInMoscow).remove(boundaryObjects).setOptions({\n strokeColor: '#0010ff',\n preset: 'islands#blueIcon'\n });\n }\n );\n }\n \n $.ajax({\n url: 'moscow.json',\n dataType: 'json',\n success: onPolygonLoad\n });\n}\n"},"resources":["moscow.json"],"directory":"https://sandbox.api.maps.yandex.net/examples/ru/2.1/route_inside_polygon/"}
Часто возникает задача проложить маршрут между заданными точками, а затем проанализировать, в какие области или города попадают сегменты этого маршрута. В данном примере по заранее подготовленным данным создается многоугольник, описывающий МКАД. После получения маршрута делается проверка на попадание его сегментов в этот многоугольник с помощью метода searchInside.
С помощью объекта GeoQueryResult можно задавать опции или данные сразу группе геообъектов. Здесь показано, как сегменты маршрута, лежащие внутри и снаружи кольцевой автодороги, раскрашиваются в разные цвета.