百度地图:第一篇HelloWorld

来源:互联网 发布:数据录入员工作职责 编辑:程序博客网 时间:2024/05/22 09:40

1、百度开发Key的获取,声明一个接口,将该Key放进去
地址:
http://developer.baidu.com/map/android-mobile-apply-key.htm
百度开发者平台
申请Key教程
开发指南/配置教程
这里写图片描述
API Key:1A4A4ABEFBEECD8C17DEE880C4EA69B9607020B5

CanstantValue.java

package huaxa.it.map;import android.R.string;/** * @项目名: BaiduMap * @包名: huaxa.it.map * @类名: CanstantValue * @创建者: 黄夏莲 * @创建时间: 2016年11月28日 ,上午11:35:23 *  * @描述: TODO */public interface CanstantValue{    String  KEY = "1A4A4ABEFBEECD8C17DEE880C4EA69B9607020B5";}

2、添加引擎到Andoid工程中
添加jar包:baidumapapi_v2_1_2.jar和locSDK_3.1.jar
添加.so文件:拷贝libapp_BaiduMapApplib_v2_1_2.so、liblocSDK3.so、libvi_voslib.so到libs\armeabi目录下
注:liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发者可根据实际需求自行添加。
这里写图片描述
3、在Manifest.xml声明使用权限

声明使用权限<!-- 这个权限用于进行网络定位--><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>

4、实现一个helloworld项目:
此处用到3个类:BMapManager 、MapView 、MapController
1. 实现布局。
2. 在setContentView()之前执行KEY校验。此中需要查看SDK的index.xml帮助文档,查看各个类的功能。
3. 实现缩放功能,添加缩放控件。
4. 设置地图中心点。
实现如下:

HelloWorld.java

package huaxa.it.map;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.MKGeneralListener;import com.baidu.mapapi.map.MKEvent;import android.app.Activity;import android.os.Bundle;import android.widget.Toast;/** * @项目名: BaiduMap * @包名: huaxa.it.map * @类名: HelloWorld * @创建者: 黄夏莲 * @创建时间: 2016年11月28日 ,下午12:09:53 *  * @描述: TODO */public class HelloWorld extends Activity{    private BMapManager manager;    @Override    protected void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        // KEY的校验        initManager();        setContentView(R.layout.common);    }    /**     * 初始化地图引擎     */    private void initManager()    {        manager = new BMapManager(getApplicationContext());        /**         * public boolean init(String strKey, MKGeneralListener listener) 参数:         * strKey - 申请的授权验证码 listener -         * 注册回调事件,该接口返回网络状态,授权验证等结果,用户需要实现该接口以处理相应事件         */        // KEY的校验        manager.init(CanstantValue.KEY, new MKGeneralListener()        {            //MKEvent存放常量            @Override            public void onGetPermissionState(int iError)            {                // TODO 授权验证                if(iError == MKEvent.ERROR_PERMISSION_DENIED)                {                    Toast.makeText(getApplicationContext(), "授权验证失败", Toast.LENGTH_SHORT).show();                }            }            @Override            public void onGetNetworkState(int iError)            {                // TODO 网络状态                if(iError == MKEvent.ERROR_NETWORK_CONNECT)                {                    Toast.makeText(getApplicationContext(), "网络无连接", Toast.LENGTH_SHORT).show();                }            }        });    }}

common.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <com.baidu.mapapi.map.MapView        android:id="@+id/MapView"        android:layout_width="match_parent"        android:layout_height="match_parent" /></LinearLayout>

Manifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="huaxa.it.map"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="14"        android:targetSdkVersion="14" />    <!-- gps -->    <!-- 这个权限用于进行网络定位 -->    <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>    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" ><!--                      <activity            android:name=".MainActivity"            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=".HelloWorld"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

实现结果:校验失败:
改正方法:http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=106461
实现效果:
这里写图片描述
实现缩放功能:
HelloWorld.java

package huaxa.it.map;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.MKGeneralListener;import com.baidu.mapapi.map.MKEvent;import com.baidu.mapapi.map.MapController;import com.baidu.mapapi.map.MapView;import com.baidu.platform.comapi.basestruct.GeoPoint;import android.app.Activity;import android.location.Geocoder;import android.os.Bundle;import android.widget.Toast;/** * @项目名: BaiduMap * @包名: huaxa.it.map * @类名: HelloWorld * @创建者: 黄夏莲 * @创建时间: 2016年11月28日 ,下午12:09:53 *  * @描述: TODO */public class HelloWorld extends Activity{    private BMapManager     manager;    private MapController   controller;    private MapView         mapView;    private int             latitude    = (int) (23.039 * 8E6);//经度    private int             longitude   = (int) (113.4042E6);//纬度    private GeoPoint        geoPoint    = new GeoPoint(latitude, longitude);//广东工业大学坐标    @Override    protected void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        // KEY的校验        initManager();        setContentView(R.layout.common);        init();    }    private void init()    {        // 地图的缩放级别(版本V2.X:3-19,V1.X:3-18级放大)        // V2.X与V1.X的主要区别:        // ①修改了地图文件的格式(节省了空间)        // ②放大级别,增加3D(18、19)的特效        // MapController管理某个具体的MapView,缩放、旋转、移动        mapView = (MapView) findViewById(R.id.MapView);        controller = mapView.getController();        controller.setZoom(12);// 设置地图的缩放级别。 这个值的取值范围是[3,19]。        mapView.setBuiltInZoomControls(true);// 设置是否启用内置的缩放控件。                                                // 如果启用,MapView将自动显示这些缩放控件。        controller.setCenter(geoPoint);//设置地图中心点    }    /**     * 初始化地图引擎     */    private void initManager()    {        manager = new BMapManager(getApplicationContext());        /**         * public boolean init(String strKey, MKGeneralListener listener) 参数:         * strKey - 申请的授权验证码 listener -         * 注册回调事件,该接口返回网络状态,授权验证等结果,用户需要实现该接口以处理相应事件         */        // KEY的校验        manager.init(CanstantValue.KEY, new MKGeneralListener()        {            // MKEvent存放常量            @Override            public void onGetPermissionState(int iError)            {                // TODO 授权验证                if (iError == MKEvent.ERROR_PERMISSION_DENIED)                {                    Toast.makeText(getApplicationContext(),                            "授权验证失败" + MKEvent.ERROR_PERMISSION_DENIED,                            Toast.LENGTH_SHORT).show();                }            }            @Override            public void onGetNetworkState(int iError)            {                // TODO 网络状态                if (iError == MKEvent.ERROR_NETWORK_CONNECT)                {                    Toast.makeText(getApplicationContext(), "网络无连接",                            Toast.LENGTH_SHORT).show();                }            }        });    }}
0 0