30.Android之百度地图简单学习

今天用了下百度地图,简单写了一个例子,记录下。

一、申请AK(API Key)

    要想使用百度地图sdk,就必须申请一个百度地图的api key。申请流程挺简单的。

    首先注册成为百度的开发者,然后打开http://lbsyun.baidu.com/apiconsole/key/create这个网址,添加应用:

至于怎样获取数字签名(SHA1)和包名,这里有详细教程http://developer.baidu.com/map/index.php?title=androidsdk/guide/key,这里就不一一详述了。

接下来就是把下载下来的开发包添加到工程里面,也就是配置下地图SDK工程:

Eclipse工程配置方法

第一步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;

1.JPG

第二步:在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_vX_X_X.jar,确定后返回。

通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。

注意:由于adt插件升级,若您使用Eclipse adt 22的话,需要对开发环境进行相应的设置,方法如下:

1. 在Eclipse 中选中工程,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态;

2. Project -> clean-> clean all .

Android Studio工程配置方法

第一步:在工程app/libs目录下放入baidumapapi_vX_X_X.jar包,在src/main/目录下新建jniLibs目录,放入libBaiduMapSDK_vX_X_X_X.so如下图所示,注意jar和so的前3位版本号必须一致,并且保证使用一次下载的文件夹中的两个文件,不能不同功能组件的jar或so交叉使用。

第二步:导入jar包。菜单栏选择File->Project Structor->Modules->Dependencies,点击+号,选择File dependency,选择jar包导入。

通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。

 

二、工程例子

我的开发工具是eclipse,所以接下来的代码基于eclipse工具写的,接下来就是正文。

1. 将下载下来的开发包中的jar包和so文件添加到libs文件下,如图:

2. 在AndroidManifest.xml中添加开发秘钥和所需权限:

权限:

1 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2     <uses-permission android:name="android.permission.INTERNET" />
3     <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
4     <uses-permission android:name="android.permission.WAKE_LOCK" />
5     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
6     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
7     <uses-permission android:name="android.permission.GET_TASKS" />
8     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
9     <uses-permission android:name="android.permission.WRITE_SETTINGS" />

3. 在布局文件中添加地图控件:

1  <com.baidu.mapapi.map.MapView
2         android:id="@+id/bmapview"
3         android:layout_width="fill_parent"
4         android:layout_height="fill_parent"
5         android:clickable="true" />

4.修改MainActivity.java文件:

 1 package com.example.testmap;
 2 
 3 import com.baidu.mapapi.SDKInitializer;
 4 import com.baidu.mapapi.map.BaiduMap;
 5 import com.baidu.mapapi.map.MapView;
 6 import android.app.Activity;
 7 import android.os.Bundle;
 8 import android.view.Menu;
 9 import android.view.MenuItem;
10 
11 public class MainActivity extends Activity {
12 
13     // 百度地图控件
14     private MapView mMapView = null;
15     // 百度地图对象
16     private BaiduMap mBaiduMap = null;
17     
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21 
22         // 在使用SDK各组件之前初始化context信息,传入ApplicationContext
23         // 注意该方法要再setContentView方法之前实现
24         SDKInitializer.initialize(getApplicationContext());
25         setContentView(R.layout.activity_main);
26 
27         // 获取地图控件引用
28         mMapView = (MapView) findViewById(R.id.bmapview);
29         mBaiduMap = mMapView.getMap();  
30     }
31 
32     @Override
33     protected void onResume() {
34         super.onResume();
35         mMapView.onResume();
36     }
37 
38     @Override
39     protected void onPause() {
40         super.onPause();
41         mMapView.onPause();
42     }
43 
44     @Override
45     protected void onDestroy() {
46         mMapView.onDestroy();
47         mMapView = null;
48         super.onDestroy();
49     }
50 
51     @Override
52     public boolean onCreateOptionsMenu(Menu menu) {
53         CreateMenu(menu);
54         return true;
55     }
56 
57     private void CreateMenu(Menu menu) {
58         MenuItem mnu1 = menu.add(0, 0, 0, "显示卫星地图");{
59         }
60         MenuItem mnu2 = menu.add(0, 1, 1, "实时交通地图");{         
61         }
62         MenuItem mnu3 = menu.add(0, 2, 2, "普通地图 ");{     
63         }
64     }
65 
66     @Override
67     public boolean onOptionsItemSelected(MenuItem item) {
68         // Handle action bar item clicks here. The action bar will
69         // automatically handle clicks on the Home/Up button, so long
70         // as you specify a parent activity in AndroidManifest.xml.
71         if (item.getItemId() == 0) 
72         {
73             // 显示为卫星地图
74             mBaiduMap.setBaiduHeatMapEnabled(false);
75             mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
76         } 
77         else if (item.getItemId() == 1) 
78         {
79             // 实时交通地图
80             mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); 
81             mBaiduMap.setBaiduHeatMapEnabled(true);
82         } 
83         else if (item.getItemId() == 2) 
84         {
85             // 普通地图  
86             mBaiduMap.setBaiduHeatMapEnabled(false);
87             mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); 
88         }
89         return true;
90     }
91 
92 }

 

 5.运行效果:
点击menu键,有三种地图选择:

点击显示卫星地图:

点击实时交通地图:

回到普通地图:

posted @ 2016-01-12 19:48  chaoer  阅读(412)  评论(0编辑  收藏  举报