Как отличить фичи в Openlayers3

Недавно я разрабатываю инструмент для картирования и выбираю openlayers3 в качестве внешнего API карты. В моем слое карты есть геометрия и изображения, я хотел бы добавить функцию, когда я нажимаю на другой тип объекта, он будет выполнять разные действия.

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


person Wenhua Hu    schedule 11.11.2015    source источник
comment
У отрицательного голоса может быть объяснение, поэтому ОП не останется в неведении.   -  person Jonatas Walker    schedule 11.11.2015
comment
Давайте закончим этот вопрос? Как насчет того, чтобы показать свой код на jsFiddle? Нелегко догадаться, что вы делаете не так.   -  person Jonatas Walker    schedule 13.11.2015
comment
@Jonatas Walker Спасибо, Джонатас, у меня есть вопрос о свойстве значка, не могли бы вы объяснить мне [якорь, якорь, смещение, смещение, размер), потому что сеть openlayers не дала больше объяснений, и это сбивает меня с толку, когда я меняю якорь или offset, они оба могут изменить положение значка, могут смещать и размер, оба могут обрезать значок, что означает Orign, эти свойства меня давно смущают, мог бы объяснить их мне, заранее спасибо.   -  person Wenhua Hu    schedule 13.11.2015
comment
Это другой вопрос. Давайте сначала закончим с этим. Если это решено, отметьте как верное.   -  person Jonatas Walker    schedule 13.11.2015
comment
Да, это сделано, спасибо за вашу постоянную помощь, я собираюсь создать еще один вопрос к новому вопросу, который я задал.   -  person Wenhua Hu    schedule 13.11.2015


Ответы (1)


Вы сделали хороший выбор. Есть несколько способов сделать это. Вы можете сохранить свойство в функции и проверить его, например:

map.on('click', function(evt) {
  var feature = map.forEachFeatureAtPixel(evt.pixel,
    function(ft, layer) { return ft; }
  );
  // here I'm using feature.get('type') but can be any name
  if (feature && feature.get('type') == 'some_value') {
    // now you have the clicked feature
  }
});

Обратите внимание, что все функции (ol.Feature) имеют геометрию.

person Jonatas Walker    schedule 11.11.2015
comment
Спасибо за вашу помощь, на основе вашего кода мне нужно добавить пользовательское свойство, которое называется типом, когда я определяю конкретную функцию. Я не знаю, что я думал, правильно или нет? Заранее спасибо. - person Wenhua Hu; 11.11.2015
comment
Не обязательно 'type'. Это может быть что угодно. - person Jonatas Walker; 11.11.2015
comment
В качестве дополнения к этому вопросу слой запрашивается с какого-то государственного картографического сервера, если использовать его таким образом, я должен убедиться, что объекты из них имеют такое свойство (у них есть свойство, называемое именем, каждый объект изображения имеет разные имя, его вряд ли можно использовать) Я не знаю, есть ли общий способ решить эту проблему с помощью метода сборки openlayers. - person Wenhua Hu; 11.11.2015
comment
, я пытаюсь использовать этот оператор: feature.getStyle.getImage() != null, в то время как возникает ошибка, когда я нажимаю на геометрию, которая показывает: Uncaught TypeError: Cannot read property 'getImage' of null. - person Wenhua Hu; 11.11.2015