javascript - 如何通过传单查询立交桥面积?

标签 javascript leaflet openstreetmap geojson overpass-api

我有一个带有 leafletOpenstreetMap。我正在使用 this使用 Overpass 查询传单的插件。

var opl = new L.OverPassLayer({
  query: "(area['name'='Roma']; node(area)['amenity'='drinking_water']);out;",


});

但是当与插件一起使用时,我的 map 没有显示任何内容。

怎么了?

注意:我的查询基于 this 工作.

编辑:

此查询正在使用插件,但不适用于 http://overpass-turbo.eu/ ?!

var opl = new L.OverPassLayer({
query: "(node(BBOX)['amenity'='drinking_water'];);out;",

});

完整示例:

var attr_osm = 'Map data &copy; <a href="http://openstreetmap.org/">OpenStreetMap</a> contributors',
attr_overpass = 'POI via <a href="http://www.overpass-api.de/">Overpass API</a>';
var osm = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {opacity: 0.7, attribution: [attr_osm, attr_overpass].join(', ')});

var map = new L.Map('map').addLayer(osm).setView(new L.LatLng(49.592041, 8.648164),2);

//OverPassAPI overlay
var opl = new L.OverPassLayer({
  query: "(node(BBOX)['amenity'='drinking_water'];);out;",


});

map.addLayer(opl);

最佳答案

您的缩放级别太低,您基本上是在检索地球大部分地区的数据。因此,您的 Overpass 查询超时,您将得不到任何结果。

改变

新 L.LatLng(49.592041, 8.648164),2)

新 L.LatLng(49.592041, 8.648164),14)

此外,我建议:

  • 添加一个[timeout:x]参数来限制查询的运行时间
  • 添加您要查询的对象的最大数量,例如out 100; 最大。 100 个节点。

此外,您不能在立交桥 Turbo 中使用 (BBOX)。 overpass turbo 的正确语法是 ({{bbox}})

关于javascript - 如何通过传单查询立交桥面积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370853/

相关文章:

android - 在 ImageView 中显示 map

google-maps - 没有Google API的地理编码?

javascript - 如何从 Controller 访问 currentUser?

javascript - iPhone 键盘在 contenteditable 上输入时会隐藏文本

javascript - 传单问题 : making layergroup of polylines not clickable

javascript - 在 Openlayers 中单击 map 外部时如何激活功能 + 弹出窗口?

javascript - 如何修复使用绝对位置的选项卡布局?

javascript - 如何将对象映射到表单字段?

ruby-on-rails - 刺激 Controller 未加载

d3.js - d3 和 Leaflet 之间的 GeoJSON 映射差异