传单。我如何通过纬度和经度获得JSON标记属性?

时间:2016-12-02 09:20:07

标签: json ajax leaflet openstreetmap geojson

我有自定义的'纬度'和'经度'变量。

var custom_loc = [50.34434, 63.23442]

此外,我还有JSON格式的GeoJSON数据。

 {
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [50.34434, 63.23442]
  },
  "properties": {
    "id" : "1",
    "name": "Good place"
  }
}

如何通过JSON找到"custom_loc"标记并获取JSON属性(对于e.x. "ID")?

我在项目中使用leaflet.js。

1 个答案:

答案 0 :(得分:0)

您可以使用标记getLatLng()方法访问其latlng,然后将其与您的自定义位置进行匹配。要将id绑定到图层,最好的办法是将geoJSON功能添加到L.GeoJSON图层并通过layer.feature.properties.id访问id,或通过传递给L的onEachFeature方法将id绑定到图层。 GeoJSON选项。

然后,只要您想找到具有匹配latlng的图层,只需使用eachlayer方法遍历您的geojson图层,例如:

var custom_loc = [50.34434, 63.23442];
var geoJSON = L.geoJson(
      {
      "type": "FeatureCollection",
      "features": [
        {
          "type": "Feature",
          "geometry": {
            "type": "Point",
            "coordinates": [50.34434, 63.23442]
          },
          "properties": {
            "id" : "1",
            "name": "Good place"
          }
        }
      ]
    },
    {
      onEachFeature: function(feature, layer) {
        layer.options.id = feature.properties.id;
      }
    }
);
map.addLayer(geoJSON);

geoJSON.eachLayer(l => {
  var coords = l.feature.geometry.coordinates;
  var latlng = l.getLatLng();
  if (latlng.lat === custom_loc[1] && latlng.lng === custom_loc[0]) {
    console.log(`Latlng match: ${l.options.id}`)
  }
  if (coords[0] === custom_loc[0] && coords[1] === custom_loc[1]) {
    console.log(`Latlng match: ${l.options.id}`);
  }
});