这是我的小提琴:http://jsfiddle.net/anton9ov/d8yga33f/
我需要根据GeoJSON文件中的ID号来组织选择器中的项目顺序。这是我的代码的一部分,项目显示在列表中:

map.on("layeradd", function(e) {
    if(!e.layer.options) {
    return;
  }

    if((e.layer.options.id != "markerLayer1") && (e.layer.options.id != "markerLayer2")) {
    return;
  }

  var markers = e.layer.getLayers();

  var mySelector = $("#mySelector");

  for(var i = 0; i < markers.length; i++) {
    mySelector.append("<option value='" + L.stamp(markers[i]) + "'>" + markers[i].feature.properties.name + "</option>");
  }
});

最佳答案

尝试使用Array.prototype.sort()

map.on("layeradd", function(e) {
  // ...
  var markers = e.layer.getLayers();

  // Get the dropdown
  var mySelector = $("#mySelector");

  markers.sort(function(a,b) {
    // get the ids, and parse them as int
    var aId = parseInt(a.feature.properties.id,10),
        bId = parseInt(b.feature.properties.id,10);
    return aId < bId ? -1 : aId > bId ? 1 : 0
  }).forEach(function(marker) {
    mySelector.append("<option value='"
        + L.stamp(marker) + "'>"
        + marker.feature.properties.id // I added the marker id
        + '. '
        + marker.feature.properties.name
        + "</option>");
  })
});


forked fiddle

关于javascript - 如何根据GeoJSON属性中的ID编号设置下拉列表项的顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36308995/

10-16 23:12