2016-02-16 3 views
1

У меня есть событие click, прикрепленное к моей карте. В этом событии click я запускаю функцию, которая должна добавить функцию к карте, но теперь ничего не происходит. Я пробовал так:Невозможно добавить функцию программно на уровень

function boo (map, layer){ 
    var source = layer.getSource(); 
    var thing = new ol.geom.Polygon([[ 
     ol.proj.transform([-16,-22], 'EPSG:4326', 'EPSG:3857'), 
     ol.proj.transform([-44,-55], 'EPSG:4326', 'EPSG:3857'), 
     ol.proj.transform([-88,75], 'EPSG:4326', 'EPSG:3857') 
    ]]); 
    var featurething = new ol.Feature({ 
     name: "Thing", 
     geometry: thing, 
     style: function() { 
      console.log("Never see this text"); 
      return new ol.style.Style({ 
       fill: new ol.style.Fill({ 
        color: "rgba(192,192,192,1)" 
       }), 
       stroke: new ol.style.Stroke({ 
        color: "rgba(192,192,192,1)", 
        width: 10 
       }) 
      }) 
     } 
    }); 
    source.addFeature(featurething); 
    // see no error messages, but still no feature is added to the map 
} 
+0

Кстати, я проверил 'source.getFeatures()' и видеть, что эта новая функция есть, и есть некоторые реальные координаты, но до сих пор она не отображается на карте по некоторым причинам. – Jacobian

+0

Это ошибка OL3. По какой-то причине настройка стиля функции, как я, - не работает. И он должен быть установлен отдельно с feature.setStyle (...) – Jacobian

ответ

3

It is a OL3 bug

Не так быстро.

Первым аргументом вашей функции должно быть событие click. Другая ошибка: нет параметра style в конструкторе ol.Feature.

Установить стиль объекта после его создания. Итак:

featurething.setStyle(some_style_or_a_function);