OpenLayers 3 的下拉菜单
Dropdown menu with OpenLayers 3
我正在使用 openlayers 3。我想根据矢量 GeoJSON 中包含的值填充下拉菜单。从下拉菜单中选择一个值时,我想放大实体。
我现在的问题是我想从 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'));
});
首先,我假设您必须将一些参数传递给您的回调:
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);
});
我已经解决了我的问题:
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);
感谢那些花时间回复的人
我正在使用 openlayers 3。我想根据矢量 GeoJSON 中包含的值填充下拉菜单。从下拉菜单中选择一个值时,我想放大实体。
我现在的问题是我想从 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'));
});
首先,我假设您必须将一些参数传递给您的回调:
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);
});
我已经解决了我的问题:
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);
感谢那些花时间回复的人