百度地图API的应用

一、在android studio中生成数字签名:

1.在dos窗口中输入:cd .android

2.输入 keytool -genkey -v -keystore 证书别名 -alias liufeng.keystore -keyalg RSA -validity 20000

二、获取数字签名:在dos窗口中输入keytool -list -v -keystore debug.keystore

三、在百度地图中申请秘钥,也就是创建应用。注意,这里应用的类型应该是Adroid SDK

四、导入架包:http://download.csdn.net/detail/qust1508060414/9561066

       注意:这里的 .so的导入要在BaiduMap2\app\src\main\jniLibs\armeabi-v7a中

五、在activity.xml中贴代码:

<com.baidu.mapapi.map.MapView
    android:id="@+id/bmapView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    xmlns:android="http://schemas.android.com/apk/res/android">
六、贴代码
import android.app.Activity;
import android.widget.Toast;
import android.graphics.Bitmap;
import android.os.Bundle;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.map.MKEvent;
import com.baidu.mapapi.map.MKMapViewListener;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapPoi;
import com.baidu.mapapi.map.MapView;
import com.baidu.platform.comapi.basestruct.GeoPoint;

public class MainActivity extends Activity {
    private Toast mToast;
    private BMapManager mBMapManager;
    /**
     * MapView 是地图主控件
     */
    private MapView mMapView = null;
    /**
     * 用MapController完成地图控制     */
    private MapController mMapController = null;
    /**
     * MKMapViewListener 用于处理地图事件回调
     */
    MKMapViewListener mMapListener = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**
         * 使用地图sdk前需先初始化BMapManager,这个必须在setContentView()先初始化
         */
        mBMapManager = new BMapManager(MainActivity.this);

        //第一个参数是API key,
        //第二个参数是常用事件监听,用来处理通常的网络错误,授权验证错误等,你也可以不添加这个回调接口
        mBMapManager.init("AuPUcbOP6Brj1TflCSxR7ldzc54iKao9", new MKGeneralListener() {

            //授权错误的时候调用的回调函数
            @Override
            public void onGetPermissionState(int iError) {
                if (iError ==  MKEvent.ERROR_PERMISSION_DENIED) {
                    showToast("API KEY错误, 请检查!");
                }
            }

            //一些网络状态的错误处理回调函数
            @Override
            public void onGetNetworkState(int iError) {
                if (iError == MKEvent.ERROR_NETWORK_CONNECT) {
                    Toast.makeText(getApplication(), "您的网络出错啦!", Toast.LENGTH_LONG).show();
                }
            }
        });


        setContentView(R.layout.activity_main);

        mMapView = (MapView) findViewById(R.id.bmapView);

        /**
         * 获取地图控制器
         */
        mMapController = mMapView.getController();
        /**
         *  设置地图是否响应点击事件  .
         */
        mMapController.enableClick(true);
        /**
         * 设置地图缩放级别
         */
        mMapController.setZoom(12);

        /**
         * 显示内置缩放控件
         */
        mMapView.setBuiltInZoomControls(true);

        /**
         * 保存精度和纬度的类,
         */
            GeoPoint p = new GeoPoint((int)(22.547923 * 1E6), (int)(114.067368 * 1E6));
            //设置p地方为中心点
            mMapController.setCenter(p);
            mMapView.regMapViewListener(mBMapManager, new MKMapViewListener() {

                /**
                 * 地图移动完成时会回调此接口 方法
                 */
                @Override
                public void onMapMoveFinish() {
                    showToast("地图移动完毕!");
                }

            /**
             * 地图加载完毕回调此接口方法
             */
            @Override
            public void onMapLoadFinish() {
                showToast("地图载入完毕!");
            }

            /**
             *  地图完成带动画的操作(如: animationTo())后,此回调被触发
             */
            @Override
            public void onMapAnimationFinish() {


            }

            /**
             *  当调用过 mMapView.getCurrentMap()后,此回调会被触发
             *  可在此保存截图至存储设备
             */
            @Override
            public void onGetCurrentMap(Bitmap arg0) {

            }

            /**
             * 点击地图上被标记的点回调此方法
             *
             */
            @Override
            public void onClickMapPoi(MapPoi arg0) {
                if (arg0 != null){
                    showToast(arg0.strText);
                }
            }
        });
    }



    @Override
    protected void onResume() {
        //MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
        mMapView.onResume();
        super.onResume();
    }



    @Override
    protected void onPause() {
        //MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
        mMapView.onPause();
        super.onPause();
    }

    @Override
    protected void onDestroy() {
        //MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()
        mMapView.destroy();

        //退出应用调用BMapManager的destroy()方法
        if(mBMapManager != null){
            mBMapManager.destroy();
            mBMapManager = null;
        }

        super.onDestroy();
    }



    /**
     * 显示Toast消息
     * @param msg
     */
    private void showToast(String msg){
        if(mToast == null){
            mToast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
        }else{
            mToast.setText(msg);
            mToast.setDuration(Toast.LENGTH_SHORT);
        }
        mToast.show();
    }


}
OK,搞定!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值