2015-04-27 58 views
1

我正在使用openlayers 3.从矢量GeoJSON中包含的值,我想填充下拉菜单。从下拉菜单中选择一个值时,我想放大实体。下拉菜单与OpenLayers 3

我现在的问题是,我想从我的GeoJSON的属性生成我的HTML。所以,我想这个简单的代码,但它不工作:

var menu = document.getElementById('menuDropDown'); 
vector2.getSource().forEachFeature(function() { 
    menu.innerHTML = feature.get('NOM').join(', '); 
    }); 

编辑: 我能够从列表填充下拉菜单:

var list = ['a','b','c']; 
var mySelect = $('#mySelect'); 
    $.each(list, function(val, text) { 
     mySelect.append(
      $('<option></option>').val(val).html(text) 
     ); 
    }); 

我想要做的是什么从我的矢量 的属性填充此列表,所以我试试这个:

// vector2 it's a GeoJSON who is integrate on my map 
vector2.getSource().getFeatures().forEachFeature(function(feature) { 
    list.push(feature.get('NOM')); 
}); 
+0

你能解释一下这是行不通的吗?你期望的行为是什么?实际发生了什么? – Unknown123

+0

现在,我希望Iist所有名称都包含在我的GeoJSON表格中,并且来自ID'menuDropDown'我在我的html中引用它,它将显示在我的弹出式地图界面中 – FatAl

回答

0

我解决我的问题:

vector2.getSource().on('change', function(evt){ 
     var source = evt.target; 
     var list = []; 
     source.forEachFeature(function(feature) { 
      list.push(feature.get('NOM')); 
      }); 
     // console.log("Ecrit moi les noms : " + list); 

谢谢你给那些花时间回复的人

1

首先我假设你有一些参数传递给回调函数:

vector2.getSource().forEachFeature(function(feature) { 

然后你就可以追加一个项目一个下拉列表,像这样:

var item = document.createElement('option'); 
item.setAttribute('value', feature.get('NOM')); 

var textNode = document.createTextNode(feature.get('NOM')); 
item.appendChild(textNode) 

menu.appendChild(item); 

一起:

var menu = document.getElementById('menuDropDown'); 
vector2.getSource().forEachFeature(function(feature) { 
    var item = document.createElement('option'); 
    item.setAttribute('value', feature.get('NOM')); 

    var textNode = document.createTextNode(feature.get('NOM')); 
    item.appendChild(textNode) 

    menu.appendChild(item); 
}); 
+0

有趣的回答,我不知道此方法创建选项元素。但是,我仍然没有回答我的弹出窗口。 vector2 = GeoJSON是一个向量,显示在我的Web界面中,并且表中的NAME属性。 顺便说一下,我能够diplay我的属性,当我使用forEachFeatureAtPixel和选择方法的选择 – FatAl

+0

Jimmie我编辑我的帖子,如果你有一种方法来填充从矢量源的列表3中的列表。它会不胜感激。再次感谢您的回答。 – FatAl

+0

对不起,我不太明白。但是,如果您使用JSFiddle发布示例,我会尽力提供帮助。 – Unknown123