我是靠谱客的博主 怕孤独季节,最近开发中收集的这篇文章主要介绍百度地图v3.6.1接入1--基本地图功能(一):申请开发Key(二)下载SDK(三)下面创建项目,来显示初步的显示一下百度地图:(四):代码中实现百度地图用的几个类简要说明:(五):点击下载demo,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

学习代码来自百度开放平台   官方demo点击下载

实现目标:从一个地图小白,变成可实现地图接入【创建一张百度地图并管理地图的生命周期】

实现效果:


(一):申请开发Key

  在我们使用百度地图之前,首先我们需要去BaiduMapSdK官方网站中申请key(地址为: http://lbsyun.baidu.com/apiconsole/key )。.

  1:查看应用的安全码。使用Eclipse直接查看: winows -> preferance-> android -> build

  2:将安全码和包名填入到官网要创建应用的相应位置

(二)下载SDK

  我们要使用Baidu地图开发,我们首先要去下载开发sdk库,下载地址: http://developer.baidu.com/map/sdkandev-download.htm

  要注意的是这里使用的v3.6.1,下面是主要更新

1、自v3.6.0起,官网不再支持地图离线包下载,所以SDK去掉“手动导入离线包接口”,SDK在线下载离线包接口仍维持不变。
2、因为新版采用新的分包形式,旧包无法与新包同时混用,请将之前所有旧包(so和jar)全部替换为新包。
3、自V3.6.0起,Android SDK使用新的矢量地图样式,地图显示更加清新,和百度地图客户端保持一致。
4、自V3.6.0起,原内置覆盖物相关类代码开源(OverlayManager/PoiOverlay/TransitRouteOverlay/WalkingRouteOverlay/BusLineOverlay),源码可在BaiduMapsApiDemo工程中找到。
5、自V3.6.0起,Android SDK采用功能包拆分的形式,其中:
baidumapapi_base_vX_X_X.jar和libBaiduMapSDK_base_vX_X_X.so为基础包,使用地图、检索、云检索、工具、周边雷达中任何一功能都必须包含;
baidumapapi_map_vX_X_X.jar和libBaiduMapSDK_map_vX_X_X.so为地图功能包;
baidumapapi_search_vX_X_X.jar和libBaiduMapSDK_search_vX_X_X.so为检索功能包;
baidumapapi_cloud_vX_X_X.jar和libBaiduMapSDK_cloud_vX_X_X.so为云检索功能包;
baidumapapi_util_vX_X_X.jar和libBaiduMapSDK_util_vX_X_X.so为工具功能包;
baidumapapi_radar_vX_X_X.jar和libBaiduMapSDK_radar_vX_X_X.so为周边雷达工具包;
如果您从http://lbsyun.baidu.com/sdk/download这里下载的开发包,提供给您的将所有jar打包成BaiduLBS_Android.jar。native动态库so的形式不变。

(三)下面创建项目,来显示初步的显示一下百度地图:

1.下载上面lib包,创建demo项目把jar和.so文件引入进去如下:


 2.自定义Applicaiton,设置全局变量

package com.example.testbdmaplocation;
import android.app.Application;
import com.baidu.mapapi.SDKInitializer;
public class DemoApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext
SDKInitializer.initialize(this);
}
}

2:BMapApiDemoMain.java实现key的验证:

package com.example.testbdmaplocation;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.VersionInfo;
public class BMapApiDemoMain extends Activity {
private static final String LTAG = BMapApiDemoMain.class.getSimpleName();
/**
* 构造广播监听类,监听 SDK key 验证以及网络异常广播
*/
public class SDKReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
String s = intent.getAction();
Log.d(LTAG, "action: " + s);
TextView text = (TextView) findViewById(R.id.text_Info);
text.setTextColor(Color.RED);
if (s.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)) {
text.setText("key 验证出错! 请在 AndroidManifest.xml 文件中检查 key 设置");
} else if (s
.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK)) {
text.setText("key 验证成功! 功能可以正常使用");
text.setTextColor(Color.YELLOW);
}
else if (s
.equals(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)) {
text.setText("网络出错");
}
}
}
private SDKReceiver mReceiver;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView text = (TextView) findViewById(R.id.text_Info);
text.setTextColor(Color.YELLOW);
text.setText("欢迎使用百度地图Android SDK v" + VersionInfo.getApiVersion());
ListView mListView = (ListView) findViewById(R.id.listView);
// 添加ListItem,设置事件响应
mListView.setAdapter(new DemoListAdapter());
mListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View v, int index,
long arg3) {
onListItemClick(index);
}
});
// 注册 SDK 广播监听者
IntentFilter iFilter = new IntentFilter();
iFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK);
iFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);
iFilter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);
mReceiver = new SDKReceiver();
registerReceiver(mReceiver, iFilter);
}
void onListItemClick(int index) {
Intent intent = null;
intent = new Intent(BMapApiDemoMain.this, demos[index].demoClass);
this.startActivity(intent);
}
private static final DemoInfo[] demos = {
new DemoInfo(R.string.demo_title_basemap,
R.string.demo_desc_basemap, BaseMapDemo.class),
};
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
// 取消监听 SDK 广播
unregisterReceiver(mReceiver);
}
private class DemoListAdapter extends BaseAdapter {
public DemoListAdapter() {
super();
}
@Override
public View getView(int index, View convertView, ViewGroup parent) {
convertView = View.inflate(BMapApiDemoMain.this,
R.layout.demo_info_item, null);
TextView title = (TextView) convertView.findViewById(R.id.title);
TextView desc = (TextView) convertView.findViewById(R.id.desc);
title.setText(demos[index].title);
desc.setText(demos[index].desc);
if (index >= 16) {
title.setTextColor(Color.YELLOW);
}
return convertView;
}
@Override
public int getCount() {
return demos.length;
}
@Override
public Object getItem(int index) {
return demos[index];
}
@Override
public long getItemId(int id) {
return id;
}
}
private static class DemoInfo {
private final int title;
private final int desc;
private final Class<? extends android.app.Activity> demoClass;
public DemoInfo(int title, int desc,
Class<? extends android.app.Activity> demoClass) {
this.title = title;
this.desc = desc;
this.demoClass = demoClass;
}
}
}
3: BaseMapDemo .java实现演示MapView的基本用法及地图的创建

package com.example.testbdmaplocation;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BaiduMapOptions;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.model.LatLng;
/**
* 演示MapView的基本用法
*/
public class BaseMapDemo extends Activity {
@SuppressWarnings("unused")
private static final String LTAG = BaseMapDemo.class.getSimpleName();
private MapView mMapView;
private BaiduMap mBaiduMap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
if (intent.hasExtra("x") && intent.hasExtra("y")) {
// 当用intent参数时,设置中心点为指定点
Bundle b = intent.getExtras();
LatLng p = new LatLng(b.getDouble("y"), b.getDouble("x"));
mMapView = new MapView(this,
new BaiduMapOptions().mapStatus(new MapStatus.Builder()
.target(p).build()));
} else {
mMapView = new MapView(this, new BaiduMapOptions());
}
setContentView(mMapView);
mBaiduMap = mMapView.getMap();
}
@Override
protected void onPause() {
super.onPause();
// activity 暂停时同时暂停地图控件
mMapView.onPause();
}
@Override
protected void onResume() {
super.onResume();
// activity 恢复时同时恢复地图控件
mMapView.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
// activity 销毁时同时销毁地图控件
mMapView.onDestroy();
}
}


  4:加入权限配置:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.testbdmaplocation"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<application
android:name="com.example.testbdmaplocation.DemoApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:hardwareAccelerated="true"
>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="HMA42siusR667AOHmeE70m6y" />
<activity
android:name=".BMapApiDemoMain"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".BaseMapDemo"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
android:label="@string/demo_name_basemap" >
</activity>
<!-- MapSettingStart -->
<!-- key -->
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
</service>
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" >
</uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? -->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡读取权限,用户写入离线定位数据-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
<!--允许应用读取低级别的系统日志文件 -->
<uses-permission android:name="android.permission.READ_LOGS"></uses-permission>
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="false"
android:resizeable="true"
android:smallScreens="true" />
<!-- MapSettingEnd -->
</manifest>

(四):代码中实现百度地图用的几个类简要说明:

1:在自定义Application中实现SDK组件初始化时,记得在xml的配置文件中加上声明

2:通过注册广播的方式监听SDKInitializer的状态来确定key的状态

3:MapView:一个显示地图的视图,当被焦点选中时,它能捕获按键事件和触摸手势去平移和缩放地图。MapView的创建可以使用在XML布局的方式创建,也可以使用构建函数创建。MapView的生命周期需要与Activity同步,即需要在Activity.onPause中调用onPause(), 在Activity.onResume中调用onResume(),在Activity.onDestroy中调用destory();

(五):点击下载demo


最后

以上就是怕孤独季节为你收集整理的百度地图v3.6.1接入1--基本地图功能(一):申请开发Key(二)下载SDK(三)下面创建项目,来显示初步的显示一下百度地图:(四):代码中实现百度地图用的几个类简要说明:(五):点击下载demo的全部内容,希望文章能够帮你解决百度地图v3.6.1接入1--基本地图功能(一):申请开发Key(二)下载SDK(三)下面创建项目,来显示初步的显示一下百度地图:(四):代码中实现百度地图用的几个类简要说明:(五):点击下载demo所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部