能否通过Azure Maps Render REST API获取无内置图标的地图瓦片?
如何通过Azure Maps Render REST API获取无内置图标的地图瓦片
问题概述
我正在使用Azure Maps Render - Get Map Tile REST API,想了解是否可以获取不含Azure内置图标的地图瓦片,因为我主要用这些瓦片来展示自己的图标。
我通常在缩放级别16下展示瓦片,此时会出现大量Azure内置图标(如交通站)。
我认为Web SDK可以实现该需求(若有误请指正),但我希望使用REST API。遗憾的是,Azure提供的所有microsoft.base系列样式都包含这些图标。
解决方案
完全可以通过REST API实现,不需要依赖Web SDK。核心方法是使用自定义样式隐藏内置POI图标及标签,再通过该自定义样式的ID请求瓦片:
创建自定义样式
- 登录Azure Maps Studio,进入「样式编辑器」,选择基于
microsoft.base.road(或你需要的基础样式)创建新样式 - 在左侧图层列表中,找到所有包含POI图标/标签的图层(如
poi-icon、poi-label等),将它们的「可见性」设置为「隐藏」 - 保存自定义样式,获取该样式的
tilesetId(格式为custom.{唯一标识符})
- 登录Azure Maps Studio,进入「样式编辑器」,选择基于
修改API请求
将原请求中的tilesetId替换为自定义样式的ID即可。修改后的代码示例如下:
public function getMapTile(int $x, int $y, int $zoom): string { $response = $this->getDataFromAPI('/map/tile', [ 'x' => $x, 'y' => $y, 'zoom' => $zoom, 'tileSize' => 256, 'tilesetId' => 'custom.xxxxxxxxx', // 替换为你的自定义样式ID 'api-version' => '2022-08-01', ]); if (!$response->successful()) { throw new Exception('Couldn\'t fetch tile data from azuremaps API'); } return $response->body(); }
补充说明
- 自定义样式支持精细控制图层显示,你可以根据需求只隐藏特定类型的POI图标,保留其他必要元素
- 若需要更轻量化的瓦片,也可以选择Azure Maps提供的无标签基础样式(如
microsoft.base.road.nolabels,部分区域可用),但自定义样式的灵活性更高
内容的提问来源于stack exchange,提问作者HelloWorld
相关产品推荐
相关产品推荐

