Отображение имени объекта после нажатия на ВЕКТОРНЫЙ СЛОЙ

Я новичок в Openlayers 3. У меня есть импорт векторного слоя из файла geojson. Я хотел бы показать информацию о моей функции после нажатия на векторный слой. Любая идея, как я могу это сделать?


person Agnieszka    schedule 03.03.2016    source источник


Ответы (2)


Для этой цели я использовал библиотеку из здесь. Пример кода

var popup = new ol.Overlay.Popup();
map.addOverlay(popup);

//handling Onclick popup
map.on('click', function(evt) {
 var feature = map.forEachFeatureAtPixel(evt.pixel,
   function(feature, layer) {
    return feature;
  });
 if (feature) {
    var coord = event.feature.getGeometry().getCoordinates();
    popup.show(coord, '<div><h2>Tilte</h2><p>' +feature.get('<property_in_single_quotes>')+ '</p></div>');  
}
});

Надеюсь это поможет

person KcYoosuf    schedule 04.03.2016
comment
Спасибо, это работает! Я написал так: map.on('click', function(e) { var feature = map.forEachFeatureAtPixel(e.pixel, function(feature) { return feature; }); var infoElement = document.getElementById('info '); infoElement.innerHTML = feature ? feature.get('gml_id') : ''; Я хочу показать больше возможностей, а не только 'gml_id'. Как мне это написать? - person Agnieszka; 04.03.2016
comment
Я думаю, вы можете использовать jquery append() для добавления для этой цели вместе с feature.get('‹water_information›') - person KcYoosuf; 04.03.2016
comment
Где именно я должен поставить append ()? - person Agnieszka; 04.03.2016
comment
Что-то вроде следующего фрагмента $("#info").append('<b>Title</b> : '+feature.get('gml_id')+'<br/> <b>Title</b> : '+feature.get('gml_id_2')) - person KcYoosuf; 04.03.2016
comment
Вместо infoElement.innerHTML = функция? feature.get('gml_id'): ''; используйте этот $(#info).append('‹b›Title‹/b›: '+feature.get('gml_id')+'‹br/›‹b›Title‹/b›: '+feature.get ('gml_id_2')) . - person Agnieszka; 04.03.2016
comment
Да, попробуйте... В моем случае я не использовал append(). - person KcYoosuf; 04.03.2016
comment
Оно работает. Но когда я щелкаю другой векторный слой, я все еще вижу предыдущую информацию. Я хотел бы после нажатия на другой слой закрыть предыдущую информацию. У вас есть идея, как это сделать? - person Agnieszka; 04.03.2016

Взгляните на эти примеры:

1) http://openlayers.org/en/v3.14.1/examples/vector-layer.html?q=overlay

2) http://openlayers.org/en/v3.14.1/examples/popup.html?q=overlay

Вместо размещения векторной информации рядом с картой вы помещаете ее в созданное вами всплывающее окно <div>.

person kaycee    schedule 03.03.2016