• 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键,有三种地图选择:

    点击显示卫星地图:

    点击实时交通地图:

    回到普通地图:

  • 相关阅读:
    ViewDragHelper: ViewDragHelper的使用
    HashMap存入和取出数据顺序不一致
    服务器raid卡、磁盘缓存的配置策略
    关于LVS+Nginx为什么会被同时使用的思考
    JDT Icons-eclipse图标大全
    EclipseHTML/JS/CSS/JS 代码自动提示
    eclipse maven设置本地仓库
    mysql 补零操作(zerofill)
    mysql datetime字段默认值 设置 当前时间
    Timed out as no activity
  • 原文地址:https://www.cnblogs.com/benchao/p/5125362.html
Copyright © 2020-2023  润新知