Добрый вечер. Помогите есть 2 многоугольника при нажатии на многоугольник включается режим редактирования как сделать что бы принажатии на кнопку (ymaps.control.Button) он отправлял запрос (Это реализована функция) и отключал режим редактирования как обратиться ? или при нажатии на другой многоугольник он на 1 отключает а на втором включает
На карте есть допустим 200 Polygon при наводке на любой высвечивается balloon.
Проблема то что подвисает браузер если быстро провести.
Может задержку сделать при наводке а не сразу? Прошу подсказок кто как бы решил проблему
Я думаю вопрос из области фантастики но все же...
Можно ли например при клике по объекту сооружения на обычной карте (дома в основном), получить его геометрию из народкой карты (если там есть она)?
Нужно для создания слоя активных областей над домами (хотя можно использовать для разных целей).
Добрый день !
Уважаемые участники , может кто-то вменяемо рассказать или показать на примерах , каким образом можно разработать собственное меню (ymaps editor vertex)?
В стандартном , подгружаемом с ymaps , при клике по вершине построенного полигона есть пункты :"Удалить", "Завершить редактирование", "Добавить внутренний контур"...
Как сделать собственное меню , допустим , чтоб там было только два первых пункта или только удалить.
Перелопатил уже кучу материала , но толком разобраться так и не смог !
Использую API 2.1.
За ранее спасибо за ответы !
Здравствуйте.
Рисую карту участков нашего села, участков не много, многоугольники. Хочу проставить им номера через placemark.
Как сделать, чтобы placemark размещался в центре многоугольника? И возможно, чтобы клик и по polygon, и по placemark открывал один и тот же балун? (сейчас балун у многоугольников, placemark`ов ещё нет)
В 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?
Ситуация такова:
на карте размещено несколько полигонов, которые имеют общие границы друг с другом, т.е. точки одного полигона являются точками другого (правильнее - другой полигон тоже имеет точки с такими же координатами).
есть потребность в изменении геометрии этих полигонов. Изменение области геометрии, неграничащей с другими полигонами - не вызывает затруднений, а вот на общей границе- очень даже не просто ...
подскажите пжлста есть ли возможность как то сцепить полигоны в общих границах (точках), и изменять геометрию обоих полигонов, в случае перемещения общей точки одного из полигонов?
Буду премного благодарен, если укажите в каком направлении двигаться....
Подскажите пожалуйста, на сколько целесообразно использовать ObjectManager для полигонов? Если в него запихнуть 1к полигонов, даст ли это какой нибудь прирост по скорости работы карты и, если да, то почему(ведь полигоны не кластеризуются) и какой?
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(…)
Пытаюсь запретить некоторые перетаскивания вершин полигона.
И если с вершинами (Vertex) все просто:
polygon.editor.events.add
vertexModel.saveCoords = vertexModel.geometry.getCoordinates();
});
polygon.editor.events.add('vertexdragend', function(e) {
Можно ли получить пересечения с помощью 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
Необходимо реализовать изменение уровней полигонов. Как в Visio на один уровень выше/ниже.
При создании полигона пытаюсь задать zIndex
polygon = new ymaps.GeoObject({
geometry: {
type: "Polygon",
coordinates: [],
options: {
zIndex:100,
maxPoints:3
}
}
далее присваиваю данному параметру другие значения, но на карте полигоны остаются в той последовательности в которой были нарисованы.
Полигоны доавляются на карту через коллекции.
В итоге вопрос, как менять уровень отображения полигонов нка карте?
});
Но если после создания посмотреть в console.log(poligon.options); видно что zIndex=NaN
Как воспользоваться данной опцией?
Здравствуйте,
подключаю API таким образом:
По нажатию на кнопку, вызывается функция создания могоугольника getPolygon(), в которой я создаю многоугольник без вершин, добавляю его на карту и использую метод startDrawing(). Код функции можно увидеть ниже:
При нажатии на кнопку возникает ошибка:
Cannot read property 'startDrawing' of undefined
Если подключить все модули, работает,
из чего я сделал вывод, что проблема возникает из-за подключенных подулей!
Подскажите, пожалуйста, какой модуль требуется подключить, geometryEditor.Polygon недостаточно?