Android-百度地图的调用 (基础版本)

之前写了一篇Android-百度地图的调用(检索功能)是因为我所在公司的项目有用到东西,作了一些简单的分享。

这篇文章也是简单的介绍一下百度地图的基础地图使用

现在百度开发者平台提供的Android SDK 版本是 - Android SDK V 3.4.0.

1,什么是百度地图Android SDK ?(简单看看从官网的截图)

2.  如何获取定制的百度地图SDK。

开发者可在百度地图Android SDK的下载页面下载到最新版的地图SDK,

下载地址为:http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download

3. 基础地图。

一,显示百地图

百度地图SDK为开发者提供了便捷的显示百度地图数据的接口,通过以下几步操作,即可在您的应用中使用百度地图数据:

第一步:创建并配置工程(具体方法参见工程配置部分的介绍);

第二步:在AndroidManifest中添加开发密钥、所需权限等信息;

1)在application中添加开发密钥

<application>
    <meta-data
        android:name="com.baidu.lbsapi.API_KEY"
        android:value="开发者 key" />
</application>
2)添加所需权限
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

第三步,在布局xml文件中添加地图控件;

<com.baidu.mapapi.map.MapView
    android:id="@+id/bmapView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true" />

第四步,在应用程序创建时初始化 SDK引用的Context 全局变量:

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        //注意该方法要再setContentView方法之前实现
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
    }
}

注意:在SDK各功能组件使用之前都需要调用

SDKInitializer.initialize(getApplicationContext());,因此我们建议该方法放在Application的初始化方法

第五步,创建地图Activity,管理地图生命周期;

public class MainActivity extends Activity {
    MapView mMapView = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        //注意该方法要再setContentView方法之前实现
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        //获取地图控件引用
        mMapView = (MapView) findViewById(R.id.bmapView);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.onDestroy();
    }
    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
        mMapView.onResume();
        }
    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
        mMapView.onPause();
        }
    }

完成以上步骤后,运行程序,即可在您的应用中显示如下地图:

二 ,基础地图

(1),地图类型

mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
//普通地图
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
//卫星地图
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);

(2),实时交通图

mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
//开启交通图
mBaiduMap.setTrafficEnabled(true);

(3),城市热力图

mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
//开启交通图
mBaiduMap.setBaiduHeatMapEnabled(true);

(4),标志覆盖物

//定义Maker坐标点
LatLng point = new LatLng(39.963175, 116.400244);
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
    .fromResource(R.drawable.icon_marka);
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
    .position(point)
    .icon(bitmap);
//在地图上添加Marker,并显示
mBaiduMap.addOverlay(option);

(5),文字覆盖物

//定义文字所显示的坐标点
LatLng llText = new LatLng(39.86923, 116.397428);
//构建文字Option对象,用于在地图上添加文字
OverlayOptions textOption = new TextOptions()
    .bgColor(0xAAFFFF00)
    .fontSize(24)
    .fontColor(0xFFFF00FF)
    .text("百度地图SDK")
    .rotate(-30)
    .position(llText);
//在地图上添加该文字对象并显示
mBaiduMap.addOverlay(textOption);

(6),弹窗覆盖物

//创建InfoWindow展示的view
Button button = new Button(getApplicationContext());
button.setBackgroundResource(R.drawable.popup);
//定义用于显示该InfoWindow的坐标点
LatLng pt = new LatLng(39.86923, 116.397428);
//创建InfoWindow , 传入 view, 地理坐标, y 轴偏移量
InfoWindow mInfoWindow = new InfoWindow(button, pt, -47);
//显示InfoWindow
mBaiduMap.showInfoWindow(mInfoWindow);

(7),检索结果覆盖物

针对检索功能模块(POI检索、线路规划等),地图SDK还对外提供相应的覆盖物来快速展示结果信息。这些方法都是开源的,开发者可根据自己的实际去求来做个性化的定制。

利用检索结果覆盖物展示POI搜索结果的方式如下:

第一步,构造自定义 PoiOverlay 类;

private class MyPoiOverlay extends PoiOverlay {
    public MyPoiOverlay(BaiduMap baiduMap) {
        super(baiduMap);
    }
    @Override
    public boolean onPoiClick(int index) {
        super.onPoiClick(index);
        return true;
    }
}

第二步,在POI检索回调接口中添加自定义的PoiOverlay;

public void onGetPoiResult(PoiResult result) {
    if (result == null || result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {
        return;
    }
    if (result.error == SearchResult.ERRORNO.NO_ERROR) {
        mBaiduMap.clear();
        //创建PoiOverlay
        PoiOverlay overlay = new MyPoiOverlay(mBaiduMap);
        //设置overlay可以处理标注点击事件
        mBaiduMap.setOnMarkerClickListener(overlay);
        //设置PoiOverlay数据
        overlay.setData(result);
        //添加PoiOverlay到地图中
        overlay.addToMap();
        overlay.zoomToSpan();
        return;
    }
}

运行结果如下:

分享到此结束~ 如有疑问可以留言,一起交流交流~~

时间: 2024-10-10 16:22:57

Android-百度地图的调用 (基础版本)的相关文章

android 百度地图 客户端调用,及调用 .jar 实现下载apk

//调起百度地图客户端 try {     intent = Intent.getIntent("intent://map/direction?origin=中关村&destination=五道口&mode=driving&region=北京&referer=Autohome|GasStation#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");     if(isInstallByread(&q

Android 百度地图2.4.2版本标注动画效果

ImageView latestMapEventImageView = null; // 更新震中位置 private void updateMapEventOverlay() { mMapEventOverlay.removeAll(); if (latestMapEventImageView != null) { mMapView.removeView(latestMapEventImageView); latestMapEventImageView.setImageDrawable(nul

Android百度地图 - 在地图上标注已知GPS纬度经度值的一个或一组覆盖物 - OPEN 开发经验库 - 360安全浏览器 8.1

首页   代码   文档   问答   资讯   经验   GitHub日报 登录   注册 www.open-open.com/libOPEN经验 投稿 全部经验分类  Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim C++ C# JSON Ruby Linux Nginx Docker 所有分类  >  开发语言与工具  >  移动开发  

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

    最近做android百度地图,但是使用baidumapapi_v2_3_1.jar和libBaiduMapSDK_v2_3_1.so显示百度地图时总是遇到问题--只显示网格而没有显示地图,网络连接和APIKey申请都是正确的,就是不知道为什么不能显示,网上也有很多人遇到这个问题,有的是SDK更新不兼容.而且网上很多百度地图都是使用V2.3.1版本,后来没有办法只有通过baidumapapi_v2_4_1.jar完成显示地图. 其中需要注意的是使用2.3.1时调用manager.init(

[android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

       前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Interest)搜索.该篇讲述定位当前自己的位置及使用getLastKnownLocation获取location总时为空值的问题. 一. 定位当前位置的原理及实现       定位当前位置可以通过LBS(Location Based Service,基于位置的服务),主要工作原理是利用无线网络Network或GPS定

Android 百度地图开发之一(Hello BaiDu Map)

之前也接触过百度地图的开发,但那是在网上找的案例或代码,而且是比较老的版本.打算重新学习一下百度地图的开发. 本次使用的百度地图的版本是 Android SDK v3.0.0 本篇文章主要讲述百度地图开发的准备和地图的成功显示即可. 首先建议大家先申请注册一个百度账号. 申请密钥(要想实现百度地图的相关服务必须申请密钥),网址:http://lbsyun.baidu.com/apiconsole/key 需要注意的是:应用名称不要重复或无效,安全码的输入详情请查看:http://develope

Android百度地图结合方向传感器我们自己定位哪里走

Android百度地图结合方向传感器我们自己定位哪里走 本文代码在http://blog.csdn.net/xyzz609/article/details/51943556的基础上进一步修改,有兴趣的同学可以研究下怎么修改的 本篇我们准备为地图添加:第一,定位功能:第二,与方向传感器结合,通过旋转手机进行道路的方向确认.有了这两个功能,地图已经可以为我服务了 @一启动就自动定位了 a,MainActivity 中添加定位代码,定位的监听器MyLocationListener b,封装的方向传感器

Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

标签: Android百度地图API Key  分类: Android 百度地图开发(2)  最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地图入手,其实他们的用法都差不多,本篇文章就带领大家在自己的Android项目中加入百度地图的功能,接下来我会写一系列关于百度地图的文章,欢迎大家到时候关注!   一 申请API key 在使用百度地图之前,我们必须去申请一个百度地图的API key,申请地址http://lbsyun.baidu.com/a

android 百度地图开发实例(转载)

因为在我的寝室google基站定位返回的数据总是为空,所以换成百度地图,发现百度地图开发起来非常方便,提供了许多有用的工具,地图的加载速度也比google地图快许多. 为了加强记忆,写一点android 百度地图开发常用的方法. 1初始化 MapManager mBMapMan = new BMapManager(this);boolean isSuccess = mBMapMan.init(this.mStrKey, new MyGeneralListener()); isSuccess 的值

Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器

在上一篇博客中,我们成功把地图导入了我们的项目.本篇我们准备为地图添加:第一,定位功能:第二,与方向传感器结合,通过旋转手机进行道路的方向确认.有了这两个功能,地图已经可以为我服务了~~~~ 效果图: 好了,可以代码,为了方便,我把所有的按钮都放到了menu菜单中. 1.初次启动定位 [java] view plaincopy /** * 定位的客户端 */ private LocationClient mLocationClient; /** * 定位的监听器 */ public MyLoca