zoukankan      html  css  js  c++  java
  • 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拷贝到libsarmeabi目录下(官网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键,有三种地图选择:

    点击显示卫星地图:

    点击实时交通地图:

    回到普通地图:

  • 相关阅读:
    Linq to OBJECT延时标准查询操作符
    LINQ to XML
    动态Linq(结合反射)
    HDU 1242 dFS 找目标最短路
    HDu1241 DFS搜索
    hdu 1224 最长路
    BOJ 2773 第K个与m互质的数
    ZOJ 2562 反素数
    2016 ccpc 杭州赛区的总结
    bfs UESTC 381 Knight and Rook
  • 原文地址:https://www.cnblogs.com/benchao/p/5125362.html
Copyright © 2011-2022 走看看