androidsdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
更新时间:2020-06-23
hello baidumap
百度地图sdk为开发者提供了便捷的使用百度地图能力的接口,通过以下几步操作,即可在您的应用中使用百度地图:
1第一步 配置androidmanifest.xml文件

1.在中加入如下代码配置开发密钥(ak):

  
      

若您还不曾申请开发密钥,点此申请

2. 在外部添加如下权限声明:



    

 

注:自android6.0起部分权限的使用需要开发者在代码中动态申请。

2第二步 在布局文件中添加地图容器

mapview是view的一个子类,用于在android view中放置地图。mapview的使用方法与android提供的其他view一样。


3第三步 地图初始化

注意:在sdk各功能组件使用之前都需要调用“sdkinitializer.initialize(getapplicationcontext())”,因此建议在应用创建时初始化sdk引用的context为全局变量。

新建一个自定义的application,在其oncreate方法中完成sdk的初始化。示例代码如下:

public class demoapplication extends application {
    @override
    public void oncreate() {
        super.oncreate();
        //在使用sdk各组件之前初始化context信息,传入applicationcontext   
        sdkinitializer.initialize(this);
        //自4.3.0起,百度地图sdk所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
        //包括bd09ll和gcj02两种坐标,默认是bd09ll坐标。
        sdkinitializer.setcoordtype(coordtype.bd09ll);
    }
}

在androidmanifest.xml文件中声明该application

4创建地图activity,管理mapview生命周期

注意:在项目中使用地图的时候要特别注意合理地管理地图生命周期,这非常重要。

以下示例代码简述对地图生命周期的管理:

public class mainactivity extends activity {  
    private mapview mmapview = null;  
    @override  
    protected void oncreate(bundle savedinstancestate) {  
        super.oncreate(savedinstancestate);    
        setcontentview(r.layout.activity_main);  
        //获取地图控件引用  
        mmapview = (mapview) findviewbyid(r.id.bmapview);  
    }  
    @override  
    protected void onresume() {  
       super.onresume();  
       //在activity执行onresume时执行mmapview. onresume (),实现地图生命周期管理  
       mmapview.onresume();  
    }  
    @override  
    protected void onpause() {  
      super.onpause();  
      //在activity执行onpause时执行mmapview. onpause (),实现地图生命周期管理  
      mmapview.onpause();  
    } 
    @override  
    protected void ondestroy() {  
      super.ondestroy();  
      //在activity执行ondestroy时执行mmapview.ondestroy(),实现地图生命周期管理  
      mmapview.ondestroy();  
    }  
}



完成以上工作即可在您的应用中显示地图:
通过添加view显示地图

百度地图sdk支持不用通过layout文件中添加mapview控件,直接在java代码中添加mapview的方式来展示地图,示例如下:

1 创建mapview对象
mapview mapview = new mapview(this);
2添加mapview对象
setcontentview(mapview);

另外,在java代码中添加mapview的方式支持通过baidumapoptions对象根据需求构造包含特定地图状态类型和控件显示状态的mapview对象。示例如下:

1 定义baidumapoptions对象
baidumapoptions options = new baidumapoptions();
2设置需要的状态
//设置地图模式为卫星地图
options.maptype(baidumap.map_type_satellite);
3创建mapview对象
mapview mapview = new mapview(this, options);
4添加mapview对象
setcontentview(mapview);

设置空白地图背景色
 注:只有地图类型设置为空白地图时,地图背景色才会设置生效

// 设置空白地图
mbaidumap.setmaptype(baidumap.map_type_none);
mbaidumap.setmapbackgroundcolor(color.argb(255, 255, 0, 0));
// 设置地图背景色

baidumapoptions类支持设置的状态如下:

状态 含义
mapstatus 地图状态
compassenable 是否开启指南针,默认开启
maptype 地图模式,默认为普通地图
rotategesturesenabled 是否允许地图旋转手势,默认允许
scrollgesturesenabled 是否允许拖拽手势,默认允许
overlookinggesturesenabled 是否允许俯视图手势,默认允许
zoomcontrolsenabled 是否显示缩放按钮控件,默认允许
zoomcontrolsposition 设置缩放控件位置
zoomgesturesenabled 是否允许缩放手势,默认允许
scalecontrolenabled 是否显示比例尺控件,默认显示
scalecontrolposition 设置比例尺控件位置
logoposition 设置logo位置
地图类型及显示层级

百度地图sdk支持21级的地图显示,如下为地图类型和图层支持层级说明

地图类型或图层 显示层级
2d地图 4-21
3d地图 19-21
卫星图 4-20
路况交通图 11-21
百度城市热力图 11-21
室内图 17-22

下表为显示层级与比例尺的对应关系

显示层级 比例尺/米
4 1000000
5 500000
6 200000
7 100000
8 50000
9 25000
10 20000
11 10000
12 5000
13 2000
14 1000
15 500
16 200
17 100
18 50
19 20
20 10
21 5
注意:检查室内图当前状态,自v5.0.0起,将地图缩放等级由3-21调整为4-21,优化南北极地区展示效果(当开启室内图时,最大缩放等级增大至22级),请开发者注意。

可以通过如下代码设置地图的缩放级别:

mapstatus.builder builder = new mapstatus.builder();
builder.zoom(18.0f);
mbaidumap.setmapstatus(mapstatusupdatefactory.newmapstatus(builder.build()));
常用地图容器

地图sdk底层运用两种glsurfaceview和textureview两种opengl es组件构建地图。下面简要介绍。

glsurfaceview
包括mapview,mapfragment和supportmapfragment三种容器。mapfragment和supportmapfragment用于在 android fragment 中放置地图。适合需要使用fragment的开发场景,方便您实现灵活的布局。mapfragment和supportmapfragment分别是android.app.fragment和android.support.v4.app,fragment的子类,mapfragment需要在android3.0以上的版本中使用。
textureview
包括texuremapview,texturemapfragment和texturesupportmapfragment三种容器。使用场景:您将mapview与其他的glsurfaceview(比如相机)叠加展示,或者是在scrollview中加载地图时,建议使用texturemapview及supporttexturemapfragment来展示地图,可以有效解决 glsurfaceview 叠加时出现的穿透、滚动黑屏等问题。如果使用texturemapview请确保:android 4.4以上系统,在androidmanifest.xml中配置硬件加速选项。
supportmapfragment

此处示例代码简要介绍supportmapfragment使用。

@override
protected void oncreate(@nullable bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_fragment);
    manager = getsupportfragmentmanager();
    //获取到supportmapfragment实例
    msupportmapfragment = supportmapfragment.newinstance(mapoptions);
    //将fragment添加至activity
    manager.begintransaction().add(r.id.map_container, mapfragment).commit();
}

另外,您也可以使用replace的方法替换已有的fragment。

manager.begintransaction().replace(r.id.map_container, mapfragment).commit();
多实例显示地图

开发者可以在一个页面中建立多个地图对象,并且针对这些对象分别操作且不会产生相互干扰。 示例代码:在布局文件中添加多个supportmapfragment



在activity中管理地图容器

@override
protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_multi_map_demo);
    latlng geo_beijing = new latlng(39.945, 116.404);
    latlng geo_shanghai = new latlng(31.227, 121.481);
    //北京为地图中心,logo在左上角
    mapstatusupdate status1 = mapstatusupdatefactory.newlatlng(geo_beijing);
    supportmapfragment map1 = (supportmapfragment) (getsupportfragmentmanager()
            .findfragmentbyid(r.id.map1));
    map1.getbaidumap().setmapstatus(status1);
    map1.getmapview().setlogoposition(logoposition.logopostionlefttop);
    //上海为地图中心
    mapstatusupdate status2 = mapstatusupdatefactory.newlatlng(geo_shanghai);
    supportmapfragment map2 = (supportmapfragment) (getsupportfragmentmanager()
            .findfragmentbyid(r.id.map2));
    map2.getbaidumap().setmapstatus(status2);
}
效果如图:
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消

"));
网站地图