示例中心
功能在线体验
控制台

高德 开发 iOS 地图SDK 开发指南 创建地图 自定义地图

更新时间:2018年11月02日

简介

自 iOS 3D 地图 SDK v5.2.0起,高德地图支持使用可视化自定义地图模版改变底图颜色和样式,实现可视化的编辑和控制显示地图元素。

实现自定义地图

创建地图样式

高德地图开放平台的开发者在取得开发者账号后,可以进入开发者控制台,在地图自定义平台选择“创建地图样式”,可以选择一个模板进行创建。


编辑地图样式 

在创建的页面的左侧列表选择任一要素编辑样式属性;也可以单击地图,在弹出的列表中选择要素进行编辑。


发布地图样式并下载 

编辑完成后点击右上角“保存”->“发布”,发布完成后,选择“使用方法”,然后选择“ios”平台,点击“下载离线文件”。


设置离线自定义样式

设置方法( V5.2.0及以上版本使用以下方法,其他版本仍使用老的调用方法):

/**
 * @brief 根据web导出数据设置地图样式, 目前仅支持自定义标准类型. 默认不生效,调用customMapStyleEnabled=YES使生效. since 5.2.0
 * @param data 高德web端工具导出的地图样式数据.
 */
- (void)setCustomMapStyleWithWebData:(NSData*)data;

示例代码:

NSString *path = [NSString stringWithFormat:@"%@/webExportedStyleData.data", [NSBundle mainBundle].bundlePath];
    NSData *data = [NSData dataWithContentsOfFile:path];
    [self.mapView setCustomMapStyleWithWebData:data];
    [self.mapView setCustomMapStyleEnabled:YES];
var path = Bundle.main.bundlePath
            path.append("/webExportedStyleData.data")
            let jsonData = NSData.init(contentsOfFile: path)
            self.mapView.setCustomMapStyleWithWebData(jsonData as Data!)
            self.mapView.customMapStyleEnabled = true;

设置在线自定义样式 (V6.0.0及以上版本才支持) 

/**
 * @brief 自定义地图样式id, 官网发布后下次开启自定义样式便可生效,目前仅支持自定义标准类型. 默认不生效,调用customMapStyleEnabled=YES使生效. since 6.0.0
 * @param customMapStyleID 自定义样式ID,从官网获取
 */
- (void)setCustomMapStyleID:(NSString *)customMapStyleID;
[self.mapView setCustomMapStyleID:@"yourID"];
self.mapView.customMapStyleEnabled = YES;
self.mapView.setCustomMapStyleID("yourID");
self.mapView.customMapStyleEnabled = true;

自定义纹理(需要在官网购买相关权限)

第 1 步,自定义平台配置纹理

在自定义平台选择支持纹理配置的属性(如陆地),选择配置纹理,可以选择平台提供的图片,也可以自行上传(注:图片大小为2^n*2^n效果会更好)(目前移动端支持的纹理为陆地、绿地、水系和建筑物)

第 2 步,下载样式文件

在第一步配置完成之后选择发布样式,回来到样式下载页面,参考之前提到的方式下载离线样式文件,下载名称为 mystyle_sdk_xx.zip 解压后结构如下

style.data 
textures.zip

第 3 步,设置样式文件

将上一步中两个文件加到您的工程,并打包到您的app

NSData *data = [NSData dataWithContentsOfFile:@"style.data path"];
[self.mapView setCustomMapStyleWithWebData:data];
[self.mapView setCustomTextureResourcePath:@"texture.zip path"];
[self.mapView setCustomMapStyleEnabled:YES];
let jsonData = NSData.init(contentsOfFile: "style.data path")
self.mapView.setCustomMapStyleWithWebData(jsonData as Data!)
self.mapView.setCustomTextureResourcePath("texture.zip path");
self.mapView.customMapStyleEnabled = true;

注:纹理暂不支持在线拉取,如果调用了setCustomMapStyleID也需要将纹理通过setCustomTextureResourcePath设置了才会生效。

示例中心 功能
在线体验
常见问题