自ios地图sdk v5.3.0(包含)版本之后,个性化地图仅支持.sty格式的样式文件。如仍需使用json格式,请根据本文编辑json代码。
v5.0.0之前的版本:
//个性化地图模板文件路径nsstring*path =[[nsbundle mainbundle] pathforresource:@"custom_map_config"oftype:@"json"];//设置个性化地图样式[bmkmapview custommapstyle:path];
打开个性化地图方法如下:
//打开个性化地图[bmkmapview enablecustommapstyle:yes];
关闭个性化地图方法如下:
///关闭个性化地图[bmkmapview enablecustommapstyle:no];
v5.0.0及之后的版本:
a、本地离线样式加载方式,关键代码如下1、2两步:
//1.设置本地个性化地图样式nsstring*path =[[nsbundle mainbundle] pathforresource:@"custom_map_config"oftype:@"json"];//设置个性化地图样式[self.mapview setcustommapstylepath:path];[self.mapview setcustommapstyleenable:yes];
打开个性化地图方法如下:
//2.打开个性化地图样式[self.mapview setcustommapstyleenable:yes];
b、通过样式id在线方式加载,关键代码如下1、2两步:
//1.设置在线个性化地图样式bmkcustommapstyleoption*option =[[bmkcustommapstyleoption alloc] init];//请输入您的在线个性化样式idoption.custommapstyleid= @"4e7360bde67c***d6e69bc6a2c53059c";//获取本地个性化地图模板文件路径nsstring*path =[[nsbundle mainbundle] pathforresource:@"custom_map_config"oftype:@"json"];//在线样式id加载失败后会加载此路径的文件option.custommapstylefilepath= path;[self.mapview setcustommapstylewithoption:option preload:^(nsstring*path){nslog(@"预加载个性化文件路径:%@",path);} success:^(nsstring*path){nslog(@"在线个性化文件路径:%@",path);} failure:^(nserror*error,nsstring*path){nslog(@"设置在线个性化地图失败:%@---%@",error.userinfo,path);}];
打开个性化地图方法如下:
//2.打开个性化地图样式[self.mapview setcustommapstyleenable:yes];
支持修改的元素类型和包容关系
以 highway 地图元素为例
元素类型elementtype | |||||
---|---|---|---|---|---|
元素代码featuretype | 形状边框颜色 | 形状填充颜色 | 文字边框颜色 | 文字填充颜色 | icon可见性 |
highway | geometry.stroke | geometry.fill | labels.text.stroke | labels.text.fill | labels.icon |
元素代码featuretype | 形状[边框]和[填充]颜色 | 文字[边框]和[填充]颜色 | |||
highway | geometry | labels.text |
设置highway的道路边框和填充 为同一颜色时,既可以分别设置geometry.stroke和geometry.fill,也可以一起设置geometry 某一元素的多样式同级别配置策略(待确定)
自v4.1.1起,由于涉及到样式在不同缩放级别的控制生效,针对可见性(visibility),颜色(color),宽度(weight)等样式的生效策略做了调整。当同一元素的可见性(visibility)、颜色(color)、宽度(weight)一起设置时,以最后设置的样式生效; 示例如下:首先将地图元素(水系)的颜色属性配置为绿色,然后又配置了visibility属性为off。则此时water元素将以后面一个配置生效,不会显示绿色。
{"featuretype":"water","elementtype":"all","stylers":{"color":"#00ff00ff"}},{"featuretype":"water","elementtype":"all","stylers":{"visibility":"off"}}
设置颜色样式
在个性化地图的配置文件custom_configdir.json中,添加如下json串,可设置不同的背景颜色。
示例如下:配置后,地图上所有的水系元素都会展示为绿色。
{"featuretype":"water","elementtype":"all","stylers":{"color":"#00ff00ff"}}
设置分级别控制元素生效
自v4.1.1起不同的地图缩放级别支持呈现不同的自定义样式,json样式stylers中的"level"字段,用来控制样式的生效级别。 指定级别生效原则:
1.该字段的值在json样式中以字符串表现,取值对标普通地图的缩放级别范围[4-21]。baidumap sdk 定义缩放级别和比例尺的关系参考显示地图。
2.如果stylers中不配置"level"字段,则该样式在所有地图缩放级别生效;
3.如果json样式,存在未指定缩放级别样式1和已指定生效的缩放级别样式2的同一元素,则在指定的缩放级别展示样式2,在其他缩放级别展示样式1;
示例如下:高速公路的样式会在11级别显示为蓝色,其他级别显示默认的颜色。
{"featuretype":"highway","elementtype":"geometry.fill","stylers":{"color":"#0000ffff","level":"11",}}
设置宽度样式
自v4.1.1起,json样式的stylers新增weight字段支持点、线元素的宽度配置,比如点元素(poi类元素,字体),线元素(如高速,地铁等)。
宽度配置生效原则:
1.该字段的值在json样式中以字符串表现,取值范围为[0, 255]。
2.如果不设置该字段,则以默认样式宽度展示。
示例如下:告诉公路显示的宽度为20。
{"featuretype":"highway","elementtype":"geometry.fill","stylers":{"weight":"20"}}
设置透明度样式
自v4.1.1起,增加透明度样式,适用所有可以设置颜色的元素属性,通过“color”字段赋值,格式如下:
颜色格式:#rrggbbaa ,r:red、g:green、b:blue、 a:alpha。注意:透明度顺序与路况图颜色的透明度顺序不一致。
如设置为人造区域的形状为黄色,且透明度为0x78 ,其中aa为透明度;透明度aa可以设置为0x00,即完全透明。
{"featuretype":"manmade","elementtype":"geometry","stylers":{"color":"#ffff0078"//color的格式为 #rrggbbaa}}
透明度生效原则
1.当前版本透明度不支持单独设置,与颜色样式一起设置。
2.该字段的值使用十六进制,范围为:[0x00, 0xff],默认值为0xff,即不透明。
3.为兼容以前的颜色样式,sdk旧版本的样式值将自动补齐透明度值,默认0xff,即不透明。
示例如下:配置后,所有的高速公路显示的颜色为是,透明度为0x0f的蓝色样式。
{"featuretype":"highway","elementtype":"geometry.fill","stylers":{"color":"#0000ff0f"}}
注意:版本支持是v3.4.2表示v3.4.2及以上版本新增属性,版本支持是v4.1.1表示v4.1.1及以上版本新增属性,v3.4.2以下版本更换版本后,请先验证显示效果。
上一篇
本篇文章对您是否有帮助?