浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

Android 地图SDK

百度地图SDK是一套应用程序接口, 通过调用地图SDK接口,开发者可以轻松访问百度地图的服务和数据,构建功能丰富、交互性强的地图类应用程序。

简介

个性化地图,通过改变底图各元素和文字的颜色、可见性,实现地图多样展现效果,适配各个行业不同的地图呈现效果或适配不同App风格。

支持设置13大类、14子类的地图元素设置,包含陆地、水系、绿地、人造区域、建筑物、高速路、城市主路、普通道路、铁路、地铁,POI、行政区划、边界线等。

支持设置的地图元素的颜色、图标及其可见性的变更。

个性化地图功能位于 ”基础地图(Map)“这个功能模块,开发者使用时请注意选择。

效果示例:

individuality_left.png individuality_right.png

个性化地图定制方式

两种方式:

通过个性地图编辑工具,自行编辑地图展示样式,生成地图样式JSON,然后通过【查看JSON】拿到JSON代码。注意:部分功能,JS API优先于地图SDK支持。请设置后,在工程中验证。

根据个性化地图元素说明规则,编辑JSON代码。

个性化地图元素说明

支持修改的地图元素

注意红色字体为v4.5.0及以上版本新增属性,v4.5.0以下版本更换版本后,请先验证显示效果。

地图元素 元素代码 形状边框
颜色
形状填充
颜色
文字边框
颜色
文字填充
颜色
icon
可见性
颜色
可见性
颜色
透明度
全部 all
陆地 land
水系 water
绿地 green
人造区域 manmade
人造区域之地铁区域 subwaystation
人造区域之教育区域 education
人造区域之医疗区域 medical
人造区域之景点区域 scenicspots
建筑物 building
高速及国道 highway
城市主路 arterial
普通道路 local
铁路 railway
地铁 subway
行政区边界 boundary
行政区化 districtlabel
行政区划之大洲  continent 
行政区划之国家  country 
行政区划之省  province 
行政区划之城市  city 
行政区划之区县  district 
行政区划之乡镇  town 
全部POI标注(v4.5.0起不再去除行政区文字) poilabel
机场标注 airportlabel
旅游景点标注 scenicspotslabel
教育标注 educationlabel
医疗标注 medicallabel


支持修改的元素类型和包容关系

以 hightway 地图元素为例

元素类型elementType
元素代码featureType 形状边框颜色 形状填充颜色 文字边框颜色 文字填充颜色 icon可见性
highway geometry.stroke geometry.fill labels.text.stroke labels.text.fill labels.icon
元素代码featureType 形状[边框]和[填充]颜色 文字[边框]和[填充]颜色
highway geometry labels.text


设置highway的道路边框和填充 为同一颜色时,既可以分别设置geometry.strokegeometry.fill,也可以一起设置geometry


设置颜色的元素属性 - 透明度

(1)v4.5.2起增加透明度样式,针对所有可以设置颜色的元素属性,当前版本透明度只能和颜色一起设置,不能单独设置。

颜色格式:#RRGGBBAA ,R:Red、G:Green、B:Blue、 A:Alpha。注意:透明度顺序与路况图颜色的透明度顺序不一致。

如设置为人造区域的形状为黄色,且透明度为0x78 ,其中AA为透明度;透明度AA可以设置为0x00,即完全透明。

{"featureType": "manmade",
 "elementType": "geometry",
 "stylers": {
             "color": "#ffff0078" 
             //color的格式为 #RRGGBBAA
            }
}

(2)透明度样式的值使用十六进制,范围为:[0x00, 0xff],默认值为0xff。为兼容以前的颜色样式,SDK旧版本的样式值将自动补齐透明度值,默认0xff,即不透明。

JSON代码示例:

1、设置形状填充颜色

 {"featureType": "highway",
  "elementType": "geometry.fill",
  "stylers": {
            "color": "#e7f7fc"
           }
 }

2、设置文字颜色

 {"featureType": "highway",
  "elementType": "labels.text.fill",
  "stylers": {
            "color": "#eeeeee"
           }
 }

3、隐藏高速和国道的icon

 {"featureType": "highway",
  "elementType": "labels.icon",
  "stylers": {
            "visibility": "off"
           }
 }
实现个性化地图

配置样式文件

style_json.json中,配置如下所示的json串来设置不同的背景颜色。您可以根据需求,在设置不同的背景颜色

个性化地图样式文件

 {"featureType": "grid",
  "elementType": "all",
  "stylers": {
            "color": "#e7f7fc"
           }
 }

另外,我们提供了3个标准模板样式文件和一个空白样式文件点击下载, 供大家使用。

设定文件路径

1、将配置好的样式文件放入任意路径,比如"/sdcard/custom_config"

2、设定地图样式文件的路径,通过以下方法设定自定义地图样式文件的绝对路径:

//该方法需在MapView/TextureMapView构造之前设置。
MapView.setCustomMapStylePath("/sdcard/custom_config");

切换自定义地图

自v4.0起,支持个性化地图和普通地图切换。设置个性化地图后,个性化地图默认为关闭状态,需要设置生效。

MapView/TextureMapView/WearMapView新增接口, 切换个性化地图方法如下:

setMapCustomEnable(boolean customMapStyleEnable); //设置个性化地图样式是否生效

显示自定义颜色背景

新增加载地图瓦片时,设置显示自定义颜色背景的方法。在个性化地图的配置文件custom_configdir.txt中,添加如下json串,可设置不同的背景那个颜色。

 {"featureType": "grid",
 "elementType": "all",
 "stylers": {
 "color": "#e7f7fc"
 }

适用于您的个性化地图为深色地图,加载地图瓦片时,将背景色设置为深色背景。

路况图路况颜色设置

Android SDK V4.5.0版本起支持路况颜色的自定义。支持对路况图的颜色做修改和取消显示,适用于在小屏幕上突出显示拥堵路况的场景。

路况颜色设置方法:setCustomTrafficColor(String severeCongestion,String congestion,String slow,String smooth)

参数含义:String severeCongestion,String congestion,String slow,String smooth分别代表严重拥堵,拥堵,缓行,畅通。

颜色格式:#AARRGGBB A:Alpha、R:Red、G:Green、B:Blue;其中AA为透明度;4个参数必须全部设置,不需要的颜色,透明度AA可以设置为00,即透明不显示。

注意:透明度顺序与个性化地图中的透明度顺序不一致

具体使用方法如下:

Step1. 打开路况开关,如下。否则样式定义不显示。

 mBaiduMap.setTrafficEnabled(true);

Step2. 调用路况设置API,自定义颜色,其中颜色值如有一项为null或者"",则自定义无效,显示默认颜色样式:

 mBaiduMap.setCustomTrafficColor("#ffba0101", "#fff33131", "#ffff9e19", "#00000000");

Step3. 对地图状态做更新,否则可能不会触发渲染,造成样式定义无法立即生效。

 MapStatusUpdate u = MapStatusUpdateFactory.zoomTo(13);
 mBaiduMap.animateMapStatus(u);

gexinghualukuang.JPG