Клуб API Карт

Тормоза при нарисованном многоугольнике

NeoN2k
24 мая 2012, 22:49

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

 

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

Так и должно быть? Создаю многоугольник по примеру в доках.

 

Спасибо!

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

нужно прикладывать ссылку на страницу и озвучить версию броузера

Браузер хром последний, компьютер мощный, делаю на ASP.NET на локалхосте пока, поэтому ссылку предоставить не могу.

           

ymaps.geocode('Москва', { results: 1 }).then(function (res) {

                var firstGeoObject = res.geoObjects.get(0);

                var myMap = new ymaps.Map("map", {

                    center: firstGeoObject.geometry.getCoordinates(),

                    zoom: 12

                }

                );

 

                myMap.controls

                             .add("mapTools")

                             .add("zoomControl", { right: 5, top: 75 })

                             .add('typeSelector'); // добавление элементов управления на карту

 

                myMap.behaviors.enable('scrollZoom');

                    var onClick = function (e) {

                        if (polyVertexCount == 0) {                    

                            var myPolygon = new ymaps.Polygon([[e.get("coordPosition")]], { hintContent: "Зона поиска", stopDrawingByDblClick: true }, { strokeWidth: 2, strokeColor: '#FF6C24', fillColor: '#FFFFFF92' });

                            myMap.geoObjects.add(myPolygon);

                            myPolygon.options.set({ interactivityModel: 'default#transparent' });

                            myPolygon.editor.startDrawing();

                            myPolygon.editor.options.set('maxPoints', 21);

 

                            myPolygon.events.add('geometrychange', function (event) {

                                var myJSONObj = { "coords": myPolygon.geometry.getCoordinates() };

                                $('#polyCoords').attr('value', JSON.stringify(myJSONObj));

                                myMap.options.set('dragCursor', 'grab');

                            });

 

                            myMap.events.add('contextmenu', function (event) {

                                myPolygon.editor.stopDrawing();

                            });

                        } // if

                        polyVertexCount++;

                    }; // onclick                  

                    myMap.options.set('dragCursor', 'crosshair');

                    myMap.events.add("click", onClick);

}); // geocode

 

Сколько примерно у вас вершин у полигона.

Вообще они сейчас сделаны так чтобы не тормозить при движении карты.

Ради эксперимента попробуйте сделать две хитрости.

1. Убрать прозрачность заливки(последние два знака в цвете)

2. если не поможет - подключите дополнительный модуль в АПИ - graphics.render.detect.all, после чего в опции(рядом с цветом) передайте renderType: 'SVG'

Пожалуйста отпишите резутаты теста, ваш браузер, ОС и, если это линукс - видеокарту.

По тормозам графику бить меня.

 

Тестировлал при 11 вершинах.

Изменение прозрасности в полной мере проверить не получилось, т.к. если убрать прозрачность и увеличить масштаб, я не могу увидеть тормоза ( весь экран белый) :) Ну а если при увеличенном масштабе бегать вдоль границ полигона, особой разницы не заметил.

Также, попробовал fillColor: '#FFFFFF00', т.е. поставить прозрачную заливку, тормоза остались.

А вот fill: false избавил от лагов.

Зато, после изменения рендертайпа на SVG стал просто летать с включенной прозрачностью! :)

ОС - Windows 7, браузер - Chrome 19.0.1084.52 m.

И еще. Не знаю, согласен ли кто со мной, и догадываюсь, что это не совсем к Вам, но, по-моему, не совсем эргономична прокрутка карты :)

Кинетическая прокрутка это здорово конечно, но, по-моему, она какая-то немного "обезбашеная" :) Слишком резкая и часто, когда нужно листнуть буквально на десяток пикселей, она как листнет, так пикселей на 100-200 :) Такое ощущение, что она не учитывает скорость движения и пройденное растояние мышки, а учитывает только сам факт скроллинга в каком-либо направлении :) Раз через раз так.

У вас тогда от карты бинга просто крышу снесет)))

Да как Вам сказать :) Попробовал только что. Расстояние пройденное курсором она как-раз учитывает :) Разве что, зум колесом бешанный :)