Клуб API Карт

Hint приклеен к курсору. Не реботает событие mousemove карты

dmitry.a.ocipov
14 июля 2014, 12:26

При загрузке карты находимся в режиме редактирования полигона. Задача сразу после рендеринга показывать хинт у курсора при перемещнии курсора перемещать хинт. При создании врешин менять текст хинта.

Как пытался:

 

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

<script>
...

    function init () {
   
    if(zoom_in>0) zoom_val = zoom_in; else zoom_val = 12;
   
    if(!coords_new) coords_new = [[]];  

    searchMap = new ymaps.Map('ms', {
                        center: [51.53244,46.02038],
                        zoom: zoom_val
                        }),
                // Создаем многоугольник
               myPolygon = new ymaps.Polygon(coords_new,
              {},
              {
                strokeWidth: 6,
                strokeColor: '#0e6c9b',
                draggable: true
              }               
               
            );
            searchMap.events.add('mousemove', function (event) {
                    pos=event.get('position');
                    console.log(pos);
                    searchMap.hint.show(pos, 'Поставьте точку');
                    
             });
            searchMap.geoObjects.add(myPolygon);
            searchMap.controls
                .add('zoomControl')
                .add('miniMap')
                .add('typeSelector')
                .add('mapTools');        
           
             if(!(zoom_in>0)){
                 myPolygon.editor.startDrawing();
             }
             myPolygon.editor.startEditing();
             var chnum = 0;

             //var hint = searchMap.hint.show(pos, 'Поставьте точку');

             myPolygon.geometry.events.add('change', function (e) {
                chnum++;
                if(chnum==1){
                    searchMap.hint.move(pos, 'Поставьте вторую точку');                   
                }
                if(chnum==2){
                    searchMap.hint.show(pos, 'Поставьте третью точку');
                }
                if(chnum==3){
                    searchMap.hint.show(pos, 'Поставьте четвёртую точку или кликните по первой точке и выберите "Завершить"');
                }
  
             });       
      
            })
   
    }

 

Пробовал использовать мутод Move Для хинта, - ругается на необъявленную функцию. Пока же даже не получается получать координаты движения курсора! Пишет их в консроль только после завершения редактирования полигона!

Прошу указать на ошибки. Спасибо.

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

Для 2.0 в песочнице у меня сработало:

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

         var pos = event.get('coordPosition');    

         myMap.hint.show(pos, 'Поставьте точку');     

     });

 

 

Для 2.1 так: 

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

                    var pos = event.get('coords');;

                    myMap.hint.close();

                    myMap.hint.open(pos, 'Поставьте точку');

                });

 

А с многогранником как в оём коде пробовали? У меня вот с ним не получается как раз. Спасибо за ответ.

Добавьте пожалуйста ваш код на jsfiddle, например. И выложите сюда ссылку. Я постараюсь поправить.

 http://jsfiddle.net/daL8z/

При этом в примере хинт хакрывается. Я же хочу чтобы чтобы именно метод move использовался. Вот в фиде виден пример того, что не работает при активном редактировании и рисовании полигона событие... .

 

 

Пока только привел код в порядок.

 

Видимо, события движения мыши не работает во время редактирвоания полигона.

Но какое-то событие же должно быть?

Иначе было бы невозможно строить полигон.

Может нужно привязывать его к слою карты на котором полигон?...

 

Используйте версию 2.1 Всилу некоторых проблем в системе событий 2.0 события mousemove при редактировании полигона там нет. В 2.1 это исправлено.

апдейт проекта до 2.1 это целая история...

Вот, исправил с 2.1 апи.

Всё сделал по ману.

и непонятная ошибка:

TypeError: o is not a constructor

...


http://jsfiddle.net/daL8z/

Останавливает рабоут сценария.


Также вопрос. Как ограничить при инициализации инструмента поиска его границы чтобы он вёлся только по карте? В песочнице там в примере гекодинг настроен на поиск в граница карты, а при использования инструмента поиска на самой карте - ищет в Саудовской Аравии названия... .

Вы не сохранили новый фидл ини дали ссылку не на тот, в данном примере подключен 2.0

Ответил ниже. Перевел проект на 2.1 по завершению выложу в фидл чуть позже.