【问题标题】:Get coordinate of selected tileset tile (by expression)获取选中的tileset tile的坐标(通过表达式)
【发布时间】:2018-06-13 01:51:04
【问题描述】:

我可以使用表达式查找和更改矢量瓦片集的属性,例如:

map.setPaintProperty('my-shp', 'fill-opacity', [
    'match',
    ['get', 'NO'],
    13708, 1,
    /* else */ 0
]);

我想知道是否有一种方法可以使用表达式获取图块集项目的确切坐标?

对不起,如果我的术语(图块集/图块项目)有误,请随时纠正我。谢谢


为了澄清,使用上面的表达式,我可以更改 NO13708 的图块集项目的不透明度。我的问题是,有没有办法获得不为13708 的tileset 项目的纬度/经度坐标?

【问题讨论】:

  • 您的意思可能是“功能”而不是“图块项目”。 “精确坐标”是指纬度/经度,还是屏幕上的像素位置?
  • 它可能是 - 我的意思是我添加了一个图块集并使用表达式我可以显示它通过表达式改变不​​透明度。我需要纬度/经度坐标,以便我可以使用例如 flyTo
  • 嗯,我认为更新您的问题以真正阐明您要解决的实际问题会很有帮助。您具体要求的(表达式中的坐标)可能不是您真正需要的。
  • @SteveBennett 我已经添加了对该问题的编辑。希望现在更清楚,如果您能指导我,我将不胜感激
  • 您实际上想对功能的纬度/经度做什么?

标签: mapbox tile mapbox-gl-js


【解决方案1】:

您可以遍历所有渲染的特征并测试“NO”属性,然后返回此特征的坐标。要获得所有渲染功能,您需要使用queryRenderedFeatures。特征遵循 GeoJSON 结构。

例如:

let features = map.queryRenderedFeatures({ layers: ['my-shp'] });
let filtered = features.filter(feature => {
    return feature.properties.NO === 13708;
});

console.log(filtered);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    相关资源
    最近更新 更多