2017-01-13 5 views
-1

Что такое следующий фрагмент кода (ol.control.Control.call) означает? Я использую openlayer 3 для создания некоторых кнопок на слое.Что такое ol.control.Control.call означает?

 var options = opt_options || {}; 
     var element = document.createElement('div'); 
     element.className = 'ol-unselectable ol-mycontrol'; 
     element.appendChild(drawPolygon);    

     ol.control.Control.call(this, { 
      element: element, 
      target: options.target 
     }); 
+0

Это означает «получить доступ к свойству' control' на переменной 'ol'. Затем получить доступ к свойству' Control' в результате, возвращенном на предыдущем шаге, затем получить доступ к свойству 'call' на результат, возвращенный на предыдущем шаге. это значение как функция, передающее значение 'this' и объект в качестве аргументов.". –

ответ

1

Ваш фрагмент кода является неполным. Является ли должен выглядеть следующим образом:

var MyCustomControl = function(opt_options) { 
    var options = opt_options || {}; 
    var element = document.createElement('div'); 
    element.className = 'ol-unselectable ol-mycontrol'; 
    element.appendChild(drawPolygon);    

    ol.control.Control.call(this, { 
     element: element, 
     target: options.target 
    }); 
}; 
ol.inherits(MyCustomControl, ol.control.Control); 

MyCustomControl является конструктор пользовательского элемента управления, который должен наследовать прототип управления ола базы, которая ol.control.Control. Чтобы гарантировать, что ваш пользовательский элемент управления наследует прототип базового управления ol, необходимо вызвать конструктор ol.control.Control в конструкторе пользовательского элемента управления, применяемого к вашему пользовательскому элементу управления. В javascript вы делаете это с использованием метода call, передавая this (которые представляют собой настраиваемый элемент управления, который вы создаете) в качестве первого аргумента, и некоторые другие аргументы, специфичные для конструктора ol.control.Control.

После этого в ol вы вызываете ol.inherits, чтобы сделать свой собственный контроль наследованием ol.control.Control методов (http://openlayers.org/en/latest/apidoc/ol.html#.inherits).

+0

Большое вам спасибо. – connie