3D建筑Mapbox

时间:2020-05-07 13:11:44

标签: jquery json mapbox

我对mapbox的问题是:-“您对3D建筑物有一个很棒的功能。是否有任何方法可以使建筑物仅在3D中选定的地址处生成,而在正常2D中围绕它的其他所有内容?”

,我从mapbox收到响应:-“我们的建筑物数据没有唯一的特征ID,因此,根据特征ID对其样式进行样式设置可能会为具有相同特征ID的几座建筑物设置样式。可以使用ID,否则,您需要实施一种变通方法,例如使用Turf来识别使用属性数据的多边形构建的要素ID, 一旦获得批准,就可以使用填充-挤压样式规范对建筑物进行样式化,从而为建筑物创建3D效果。“

现在,我们正在尝试实现上述方案。我们正在提供建筑物地址,并得到如下屏幕所示的响应:- https://i.stack.imgur.com/KJKnT.png

我在mapbox文档中看到了一种创建3D建筑物的方法,但是我的问题是我们如何利用我们的响应来创建3D建筑物以及上面的响应中建筑物的ID是什么。 正如我们在下面的屏幕截图中看到的那样,有一个geojson数据。我们如何获得具有多边形类型和几何形状的geojson数据。 https://i.stack.imgur.com/rwxEr.png

1 个答案:

答案 0 :(得分:0)

要执行类似的操作,您可以尝试以下步骤:

  1. 在运行时将地址解析器响应的中心坐标作为变量传递(请注意,如果您希望将其进一步存储在数据库中,则需要访问mapbox.places-permanent endpoint)。
  2. 将这些坐标与自定义建筑层中的面数据进行比较。您可以使用Turf进行比较。另外,您可以使用Mapbox Tilequery API在该坐标处查询自定义建筑物图层,以检索建筑物的自定义ID。
  3. 您可以使用Map#setPaintProperty为该特定ID设置fill-extrusion-height

对于屏幕截图中突出显示的单个问题:

  1. “楼层平面图”是您要指定自己的来源名称,并将在下面的Map#addLayer中进行引用。
  2. 您将无法从地理编码器生成GeoJSON数据-而是在运行时添加的该数据将是您的自定义建筑物数据,其中包含每个建筑物的自定义ID。
  3. “房间挤压”是还将指定您自己的图层的名称。您可以在Map#setPaintProperty中引用此层ID。
相关问题