2015-04-27 83 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