通过按钮获取geojson文件的特定数据

通过按钮获取geojson文件的特定数据

本文介绍了传单地图,通过按钮获取geojson文件的特定数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图用按钮在我的地图上显示我的geojson文件的特定值(data.geojson). (例如,仅以"domaine":"violences"值绘制地图)

I'm triying to display on my map specific value ( data.geojson) of my geojson file with buttons. (for exemple to plot a map with only value "domaine":"violences ")

我想通过地图上的按钮来依赖我的数据("domaine":"violences"或其他)吗?

I am loocking for a way to rely my data ("domaine":"violences" or other)with a buttons on my map ?

非常感谢您抽出宝贵的时间.我的js:

Thanks so much in advance for your time.my js:

<script type="text/javascript">
var map = L.map('map');
var terrainTiles = L.tileLayer('http://stamen-tiles-{s}.a.ssl.fastly.net/toner-lite/{z}/{x}/{y}.{ext}', {
    attribution: 'Map tiles by <a href="http://stamen.com">Stamen Design</a>, <a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a> &mdash; Map data &copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
    subdomains: 'abcd',
    minZoom: 0,
    maxZoom: 20,
    ext: 'png'
});



terrainTiles.addTo(map);
map.setView([46.5160000, 6.6328200], 10);




L.control.locate(location).addTo(map);

function addDataToMap(data, map) {
    var dataLayer = L.geoJson(data, {
        onEachFeature: function(feature, layer) {
            var popupText = "<b>" + feature.properties.nom
                + "<br>"

                + "<small>"  + feature.properties.localite
                + "<br>Rue: " + feature.properties.rue + + feature.properties.num
                + "<br>Téléphone: " + feature.properties.tel

                + "<br><a href= '" + feature.properties.url + "'>Internet</a>";
            layer.bindPopup(popupText); }
        });
    dataLayer.addTo(map);
}

$.getJSON("data.geojson", function(data) { addDataToMap(data, map); });

</script>
</body>
</html>

data.geojson

the data.geojson

{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
   "type": "Point",
   "coordinates":  [ 6.1200622,46.2106091 ]
},
"properties": {
  "nom":"Centre d'entraînement aux méthodes d'éducation active - Genève",
  "rue":"Route des Franchises",
  "num":"11",
  "npa":1203,
  "localite":"Genève",
  "canton":"GE",
  "tel":"022 940 17 57",
  "url":"www.formation-cemea.ch",
  "domaine":"formation   "
}
  },

  {
"type": "Feature",
"geometry": {
   "type": "Point",
   "coordinates":  [ 6.1243056,46.2120426 ]
  },
"properties": {
  "nom":"VIRES",
  "rue":"Rue Ernest-Pictet ",
  "num":"10",
  "npa":1203,
  "localite":"Genève",
  "canton":"GE",
  "tel":"022 328 44 33",
  "url":"www.vires.ch",
  "domaine":"violences   "
  }
}

推荐答案

要切换类别,请使用Leaflet Layers Control L.control.layers .

As for toggling ON / OFF your categories, you could use Leaflet Layers Control L.control.layers.

关于按类别(在您的情况下为域")对功能进行分组,请参阅我在评论中链接的帖子:

As for grouping your features by category ("domaine" in your case), see the post I linked in my comment: Leaflet: How to toggle GeoJSON feature properties from a single collection?

您甚至可以通过直接使用图层组 L.layerGroup 来稍微简化它而不是使用中间数组.

You could even slightly simplify it by directly using Layer Groups L.layerGroup instead of using intermediate arrays.

var categories = {},
    category;

var layersControl = L.control.layers(null, null).addTo(map);

function addDataToMap(data, map) {
  L.geoJson(data, {
    onEachFeature: function(feature, layer) {
      category = feature.properties.domaine;
      // Initialize the category layer group if not already set.
      if (typeof categories[category] === "undefined") {
        categories[category] = L.layerGroup().addTo(map);
        layersControl.addOverlay(categories[category], category);
      }
      categories[category].addLayer(layer);
    }
  });
  //dataLayer.addTo(map); // no longer add the GeoJSON layer group to the map.
}

$.getJSON("data.geojson", function(data) {
  addDataToMap(data, map);
});

演示: https://plnkr.co/edit/H6E6q0vKwb3RPOZBWs27?p=preview

这篇关于传单地图,通过按钮获取geojson文件的特定数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 16:40