设为首页 加入收藏

TOP

Android定位&地图&导航——基于百度地图移动获取位置和自动定位(一)
2017-10-12 11:29:24 】 浏览:4630
Tags:Android定位 地图 导航 基于 百度 移动 获取 位置 自动 定位
一、问题描述

使用百度地图实现如图所示应用,首先自动定位当前我起始位置(小圆点位置),并跟随移动不断自动定位我的当前位置

百度Api不同版本使用会有些差异,本例中加入lib如下:

二、编写MyApplication类
public class MyApplication extends Application {
    static MyApplication myApplication;
    BMapManager mBMapManager = null;
    String mStrKey = "7ZfuRcOx1G3oZ8TKuTNGm4sO";
    boolean m_bKeyRight = true; // 授权Key正确,验证通过
    private List<Activity> activityList = new LinkedList<Activity>();
    @Override
    public void onCreate() {
        myApplication = this;
        initEngineManager(this);
        super.onCreate();
    }
    public void initEngineManager(Context context) {
        if (mBMapManager == null) {
            mBMapManager = new BMapManager(context);
            Toast.makeText(MyApplication.getInstance().getApplicationContext(),
                    "BMapManager  初始化SUCSUC!", Toast.LENGTH_LONG).show();
        }
        if (!mBMapManager.init(mStrKey, new MyGeneralListener())) {
            Toast.makeText(MyApplication.getInstance().getApplicationContext(),
                    "BMapManager  初始化错误!", Toast.LENGTH_LONG).show();
        }
    }

    public static MyApplication getInstance() {
        if (myApplication == null) {
            myApplication = new MyApplication();
        }
        return myApplication;
    }
    public void addActivity(Activity activity) {
        activityList.add(activity);
    }
    public void exit() {
        for (Activity activity : activityList) {
            activity.finish();
        }
        System.exit(0);
    }
    // 常用事件监听,用来处理通常的网络错误,授权验证错误等
    static class MyGeneralListener implements MKGeneralListener {
        public void onGetNetworkState(int iError) {
            if (iError == MKEvent.ERROR_NETWORK_CONNECT) {
                Toast.makeText(
                        MyApplication.getInstance().getApplicationContext(),
                        "您的网络出错啦!", Toast.LENGTH_LONG).show();
            } else if (iError == MKEvent.ERROR_NETWORK_DATA) {
                Toast.makeText(
                        MyApplication.getInstance().getApplicationContext(),
                        "输入正确的检索条件!", Toast.LENGTH_LONG).show();
            }
            // ...
        }
        public void onGetPermissionState(int iError) {
            if (iError == MKEvent.ERROR_PERMISSION_DENIED) {
                // 授权Key错误:
                Toast.makeText(
                        MyApplication.getInstance().getApplicationContext(),
                        "请输入正确的授权Key!",
                        Toast.LENGTH_LONG).show();
                MyApplication.getInstance().m_bKeyRight = false;
            }
        }

    }
}
三、编写主程序MainActivity,显示当前所处位置

 主程序MainActity:

public class MainActivity extends Activity {
    public MyApplication app;
    static MapView mMapView = null;
    public MKMapViewListener mMapListener = null;
    MyLocationOverlay myLocationOverlay = null;
    // 定位相关
    LocationClient mLocClient;
    public NotifyLister mNotifyer = null;
    public MyLocationListenner myListener = new MyLocationListenner();
    LocationData locData = null;
    private MapController mMapController = null;
    
    static MKSearch mkSerach;

    Handler mHandler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            Toast.makeText(MainActivity.this, "msg:" + msg.what,
                    Toast.LENGTH_SHORT).show();
        };
    };
    static TextView showAddr;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        showAddr = (TextView) findViewById(R.id.showAddr);
        MyIcon mi = new MyIcon(this);
        //在屏幕中心点添加接我图标
        getWindow().addContentView(
                mi,
                new LayoutParams(LayoutParams.FILL_PARENT,
                        LayoutPara
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【同行说技术】Android程序员从小.. 下一篇Android定位&地图&导航——基于百..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目