Клуб API Карт

Найдено на тему «Polygon»:
Отмена режима редактирования полигона
Дмитрий Ращупкин
1 ноября 2017, 12:15

Добрый вечер. Помогите есть 2 многоугольника при нажатии на многоугольник включается режим редактирования как сделать что бы принажатии на кнопку (ymaps.control.Button) он отправлял запрос (Это реализована функция) и отключал режим редактирования как обратиться ? или при нажатии на другой многоугольник он на 1 отключает а на втором включает

2 комментария
Polygon,geometryEditor.Polygon
Множественная загрузка многоугольников на карту
Дмитрий Ращупкин
4 октября 2017, 23:05

На карте есть допустим 200 Polygon при наводке на любой высвечивается balloon. 

Проблема то что подвисает браузер если быстро провести.  

Может задержку сделать при наводке а не сразу? Прошу подсказок кто как бы решил проблему

Polygon
Геометрия объектов из народной карты
Mackiavelly67
4 апреля 2017, 16:12

Я думаю вопрос из области фантастики но все же...

Можно ли например при клике по объекту сооружения на обычной карте (дома в основном), получить его геометрию из народкой карты (если там есть она)?

Нужно для создания слоя активных областей над домами (хотя можно использовать для разных целей).

1 комментарий
GeoObject,Polygon,geocode,народная карта,API 2.1
Разработка собственного меню (рисование полигона)
tripguard
16 марта 2017, 12:02

Добрый день ! 

Уважаемые участники , может кто-то вменяемо рассказать или показать на примерах , каким образом можно разработать собственное меню (ymaps editor vertex)?

В стандартном , подгружаемом с ymaps , при клике по вершине построенного полигона есть пункты :"Удалить", "Завершить редактирование", "Добавить внутренний контур"...

Как сделать собственное меню , допустим , чтоб там было только два первых пункта или только удалить.

Перелопатил уже кучу материала , но толком разобраться так и не смог !

Использую API 2.1.

За ранее спасибо за ответы !

2 комментария
menu,Polygon,geometryEditor.Polygon,editor,vertex,vertex_menu
placemark внутри polygon
Sergey Il`ich
13 февраля 2017, 09:33

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

Рисую карту участков нашего села, участков не много, многоугольники. Хочу проставить им номера через placemark.

Как сделать, чтобы placemark размещался в центре многоугольника? И возможно, чтобы клик и по polygon, и по placemark открывал один и тот же балун? (сейчас балун у многоугольников, placemark`ов ещё нет)

5 комментариев
Polygon,Placemark,ballon
Как удалять метки, поставленные через setFilter, при обновлении RemoteObjectManager?
Melody Nelson
21 октября 2016, 16:14
В init получаю features из RemoteObjectManager
var objectManager = new ymaps.RemoteObjectManager('/api/maps/getFeatures&bbox=%b&zoom=%z',
{
    clusterHasBalloon: true,
    splitRequests: false,
    geoObjectOpenBalloonOnClick: false,
    clusterHideIconOnBalloonOpen: false
});

В зависимости от масштаба это либо полигоны - округа или районы, либо точки. У каждого округа и района в details есть цифра, и ее нужно выводить меткой, только когда виден этот округ/район.

Создаю коллекцию для будущих меток:

var myGeoObjects = new ymaps.GeoObjectCollection({}, {
                        preset: "islands#redCircleIcon",
                        strokeWidth: 4,
                        geodesic: true
                    });

В setFilter высчитываю центр полигона и помещаю метку в коллекцию:

cameraObjectManager.setFilter(function(object) {
    if (object.properties.details.objectType == 'DISTRICT') {
        var polygonGeometry = new ymaps.geometry.Polygon(object.geometry.coordinates);
        polygonGeometry.setMap(myMap);
        polygonGeometry.options.setParent(myMap.options);
        var pixelBounds = polygonGeometry.getBounds();
        var pixelCenter = [pixelBounds[0][0] + (pixelBounds[1][0] - pixelBounds[0][0]) / 2, (pixelBounds[1][1] - pixelBounds[0][1]) / 2 + pixelBounds[0][1]];

        var myPlacemark = new ymaps.Placemark(
            pixelCenter, {
                iconContent: object.properties.details.cameraCount,
                hintContent: object.properties.details.name,
                balloonContentBody: object.properties.details.name + ": " + object.properties.details.cameraCount + " камер"
            }, {
                preset: 'islands#blackStretchyIcon'
            }
        );

        myGeoObjects.add(myPlacemark);
    }


    return true;
});

и добавляю на карту:

myMap.geoObjects.add(objectManager);
myMap.geoObjects.add(myGeoObjects);

Как сделать так, чтобы при каждом обновлении RemoteObjectManager, предыдущие метки из этой коллекции удалялись? Сейчас, если я масштабирую с района на округ, то районные метки остаются, и добавляется окружная метка. Нужно, чтобы удалялись только они, но не метки, полученные через сам RemoteObjectManager.

Что и в какой момент нужно вызывать, чтобы эта коллекция меток очищалась и удалялась с карты при каждом зуме/запросе RemoteObjectCollection?

GeoObject,GeoObjectCollection,RemoteObjectManager,Polygon,placemark
Общие границы полигонов
MaximVarz
4 октября 2016, 17:52

Ситуация такова:

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

есть потребность в изменении геометрии этих полигонов. Изменение области геометрии, неграничащей с другими полигонами  - не вызывает затруднений, а вот на общей границе- очень даже не просто ...

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

Буду премного благодарен, если укажите в каком направлении двигаться....

3 комментария
Polygon,полигон,полигоны
ObjectManager
Mylandbroker
27 июня 2016, 16:28

Подскажите пожалуйста, на сколько целесообразно использовать ObjectManager для полигонов? Если в него запихнуть 1к полигонов, даст ли это какой нибудь прирост по скорости работы карты и, если да, то почему(ведь полигоны не кластеризуются) и какой? 

3 комментария
ObjectManager,Polygon
Оверлей-изнанка регионов. TypeError: child.getParent is not a function(…)
Удалённый пользователь
22 апреля 2016, 09:37
coordinates = [];
            map.geoObjects.each(function(collection) {
                return collection.each(function(region) {
                    coordinates.push.apply(coordinates, region.geometry.getCoordinates());
                  }
                });
            });
            center = map.getGlobalPixelCenter();
            size = map.container.getSize();
            d = 512;

            coordinates.push([[center[0] - size[0] - d, center[1] - size[1] - d], [center[0] + size[0] + d, center[1] - size[1] - d], [center[0] + size[0] + d, center[1] + size[1] + d], [center[0] - size[0] - d, center[1] + size[1] + d], [center[0] - size[0] - d, center[1] - size[1] - d]]);

            try {

                overlay = new ymaps.geometry.pixel.Polygon(coordinates,'evenOdd',{},{
                    fillColor: '#6699ff'
                });

            } catch (_error) {
                e = _error;
                console.log(e); //TypeError: child.getParent is not a function(…)

            }

            try {
                map.geoObjects.add(overlay);
            } catch (_error) {
                e = _error;
                console.log(e);
            }

            console.log(overlay); //PixelPolygonGeometry {_coordinates: Array[402], _fillRule: "evenOdd", _convex: undefined, _metaData: Object, _bounds: null}_bounds: null_convex: undefined_coordinates: Array[402]_fillRule: "evenOdd"_metaData: Object__proto__: Object


            return map.geoObjects.each(function(object) {
                return console.log(object); //GeoObjectCollection (регионы)
            });

Пытаюсь закрасить всю карту кроме регионов, как в этом примере: http://dimik.github.io/ymaps/examples/regions/ 
Массив координат строится как надо, но при попытке создать новый Polygon по координатам ловится ошибка TypeError: child.getParent is not a function(…)

8 комментариев
Polygon
Корректный способ вернуть Edge на место
Константин Кузнецов
20 октября 2015, 17:41

Пытаюсь запретить некоторые перетаскивания вершин полигона.

И если с вершинами (Vertex) все просто:

                        polygon.editor.events.add('beforevertexdragstart', function(e) {

                           var vertexModel = e.get('vertexModel');

                           vertexModel.saveCoords = vertexModel.geometry.getCoordinates();

                        });

                        polygon.editor.events.add('vertexdragend', function(e) {

                           var vertexModel = e.get('vertexModel');
                           var ok = testVertex(vertexModel);
                           if(!ok) {
                              vertexModel.geometry.setCoordinates(vertexModel.saveCoords);
                           }
                        });
То с промежуточной вершиной (Edge) не пойму. Если использовать edgedragend, то координаты в случае необходимости отката ей не присвоить. Завязываться на beforeedgedrag? Но это слишком частая проверка, да и preventDefault почему-то не откатывает перетаскивание.
Поскольку в результате перетаскивания Edge появляется новый Vertex, попробовал завязаться на beforevertexadd, все бы хорошо. Помешать появлению vertex удается, но тогда в воздухе подвисает ни к чему не привязанный Edge, в том месте где закончили Drag. Придумал только вызывать stopEditing() и тут же startEditing(), но тогда полигон мелькает, а это не красиво.
5 комментариев
EdgeMove,API 2.1,Polygon,events
Можно ли найти пересечение polyline и polygon?
Константин Кузнецов
15 октября 2015, 14:14

Можно ли получить пересечения с помощью ymaps.geoQuery(...).searchIntersect(...) или еще каким-то образом.

Т.е. если они пересекаются в одной точке, то результатом была бы эта одна точка, если в двух точках, то две точки, если соприкасаются на отрезке, то результат полилиния.


В моем примере например полигон и полилиния имеют одну общую вершину, и выполнив:

    var result = ymaps.geoQuery(polygon).searchIntersect(polyline);

    result.setOptions('fillColor', 'FF0000');

Красным подкрашивается весь полигон, а хотелось бы получить именно пересечение, т.е. точку.

А если:

  var result = ymaps.geoQuery(polygon).intersect(ymaps.geoQuery(polyline));

Вообще result.getLength() равен 0

 

1 комментарий
API 2.1,Polyline,Polygon,geoQuery
zIndex расстановка полигонов
Удалённый пользователь
7 августа 2015, 12:36

Необходимо реализовать изменение уровней полигонов. Как в Visio на один уровень выше/ниже.

При создании полигона пытаюсь задать zIndex

polygon = new ymaps.GeoObject({

geometry: {

type: "Polygon",

coordinates: [],

options: {

zIndex:100, 

maxPoints:3

}

 }

 

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

 

Полигоны доавляются на карту через коллекции.

 

В итоге вопрос, как менять уровень отображения полигонов нка карте?

 

 });

 

Но если после создания посмотреть в console.log(poligon.options); видно что zIndex=NaN 

 

 Как воспользоваться данной опцией?

 

 

7 комментариев
zIndex,API 2.1,Polygon,полигон
Модуль для создания пользователем многоугольника на карте (Polygon, метод startDrawing())?
Удалённый пользователь
17 ноября 2014, 18:16

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

подключаю API таким образом:

<script src="http://api-maps.yandex.ru/2.1/?lang=ru_RU&load=Map,Polygon,geometryEditor.Polygon,Placemark,geoObject.addon.balloon,geoObject.addon.hint,event.Manager,Event,Clusterer,templateLayoutFactory,map.Balloon,map.GeoObjects,control.Button,control.RulerControl" type="text/javascript"></script>

 По нажатию на кнопку, вызывается функция создания могоугольника getPolygon(), в которой я создаю многоугольник без вершин, добавляю его на карту и использую метод startDrawing(). Код функции можно увидеть ниже:

// Функция создания многоугольника
function getPolygon() {
    var coords = [];
    var params = {};
    var options = {
        draggable: true,
        editorDrawingCursor: "crosshair"
    };
   // Создаю многоугольник
    polygon = new ymaps.Polygon(coords, params, options);
   // Добавляю его на карту
    map.geoObjects.add(polygon);
   // Добавляю метод startDrawing()
    polygon.editor.startDrawing();
}

При нажатии на кнопку возникает ошибка:

Cannot read property 'startDrawing' of undefined

Если подключить все модули, работает,

<script src="http://api-maps.yandex.ru/2.1/?load=package.full&lang=ru-RU" type="text/javascript"></script>

из чего я сделал вывод, что проблема возникает из-за подключенных подулей!

Подскажите, пожалуйста, какой модуль требуется подключить, geometryEditor.Polygon недостаточно?

4 комментария
API 2.1,Polygon,модули