如何在 Azure IndoorMaps 中为 tileset 指定 facilityId?

How to specify facilityId for a tileset in Azure IndoorMaps?

我已经按照 Azure Indoor Maps Creator 教程进行操作 here but used a python script from another repository here 以简化上传地图文件的过程。基本不需要PostMan。

该示例连接了一个 levelchanged 事件处理程序并将事件数据输出到控制台。 facilityId 的事件数据始终是 FCL13。我找不到在任何地方指定此数据的位置。不在 python 脚本、示例数据压缩文件 manifest.json 中,也不在 DWG 文件中(我查看这些文件的能力有限)。

我假设我应该能够指定我正在为哪个设施上传数据,所以我希望 API 调用能够提供这个(来自 python 脚本),或者它应该是DWG 文件中的一些元数据。

我的目的是上传不止一栋建筑的平面图,因此需要 facilityId 是可配置的。将特定的图块集关联到不同的 facilityId 可以让我知道在 levelchanged 事件期间哪个设施的级别发生了变化。

具体地图数据上传指定的facilityId数据在哪里?

所有 Id(facilityId、levelId、unitId 等)都是在您 create a dataset 时生成的。这些 ID 不应手动设置。

可以列出地图中加载的 facilityId,以及它们的名称、地址信息等 manifest.json 中提供的信息。

注意: 看起来 'indoorTiles' 源缺少 getShapes() 方法,因此需要一个变通方法来查询底层 mapbox。

map._getMap().querySourceFeatures('indoorTiles', {sourceLayer: 'Indoor facility'});

来自 Mapbox 关于 querySourceFeatures() 的文档:

Because features come from tiled vector data or GeoJSON data that is converted to tiles internally, feature geometries may be split or duplicated across tile boundaries and, as a result, features may appear multiple times in query results.