关于百度地图显示自己的位置

15 篇文章 0 订阅

百度地图如何显示自己的位置,按照官方文档做的,如何定位自己位置或以自己为中心的一定范围内 , 源码如下:


package com.shaccp.ui;

import java.util.ArrayList;
import java.util.List;

import android.content.Intent;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.ItemizedOverlay;
import com.baidu.mapapi.LocationListener;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKBusLineResult;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.MKLocationManager;
import com.baidu.mapapi.MKPlanNode;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearch;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapController;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.MyLocationOverlay;
import com.baidu.mapapi.Overlay;
import com.baidu.mapapi.OverlayItem;
import com.baidu.mapapi.PoiOverlay;
import com.baidu.mapapi.RouteOverlay;
import com.baidu.mapapi.TransitOverlay;

public class BaiduMap extends MapActivity {

        private BMapManager mBMapMan = null;
        private MapView mMapView = null;
        private MyLocationOverlay mLocationOverlay = null;
        private MKLocationManager mLocationManager = null;
        private LocationListener mLocationListener = null;
        private MapController mMapController = null;
        private MKSearch mMKSearch = null;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.map);

                mBMapMan = new BMapManager(getApplication());
                mBMapMan.init("FE81BC4303929E67128FE2C57B23BBED7E277002", null);
                super.initMapActivity(mBMapMan);

                mMapView = (MapView) findViewById(R.id.bmapsView);
                mMapView.setBuiltInZoomControls(true); // 设置启用内置的缩放控件
                mMapView.setDrawOverlayWhenZooming(true);// 设置缩放的过程显示图层
                mMapController = mMapView.getController(); // 得到mMapView的控制权,可以用它控制和驱动平移和缩放
                if(mLocationManager==null){
                        GeoPoint point = new GeoPoint((int) (43.88 * 1E6),
                                         (int) (125.34 * 1E6));
                        mMapController.setCenter(point);
                        
                }
//                 MapController mMapController = mMapView.getController(); 
                

                // mLocationOverlay = new MyLocationOverlay(BaiduMap.this, mMapView);//
                // 添加定位图层
                // mMapView.getOverlays().add(mLocationOverlay);
                // GeoPoint pt =null;

                mLocationManager = mBMapMan.getLocationManager();
                MyLocationOverlay mylocTest = new MyLocationOverlay(BaiduMap.this,
                                mMapView);
                mylocTest.enableMyLocation();// 启动定位
                mylocTest.enableCompass();// 启动指南针
                mMapView.getOverlays().add(mylocTest);// 添加图层

                mLocationListener = new LocationListener() {

                        @Override
                        public void onLocationChanged(Location location) {
                                // TODO Auto-generated method stub
                                if (location != null) {
                                        GeoPoint geoPoint = new GeoPoint(
                                                        (int) (location.getLatitude() * 1e6),
                                                        (int) (location.getLongitude() * 1e6));
                                        mMapView.getController().animateTo(geoPoint);
                                        mMapController.setCenter(geoPoint);
                                        mMapController.setZoom(12); // 设置地图zoom级别
                                }
                        }

                };

                // mMKSearch.poiSearchNearBy("KFC", new GeoPoint((int) (39.915 * 1E6),
                // (int) (116.404 * 1E6)), 5000);
                // mMKSearch.init(mBMapMan, new MySearchListener());//绑定监听

                // GeoPoint point = new GeoPoint((int) (39.915 * 1E6),
                // (int) (116.404 * 1E6)); // 用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)
                // mMapController.setCenter(pt); // 设置地图中心点
                // mMapController.setZoom(12); // 设置地图zoom级别
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // TODO Auto-generated method stub
                menu.add(0, 0, 0, R.string.location);// 定位
                menu.add(0, 1, 1, R.string.neighborhood);// 附近
                menu.add(0, 2, 2, R.string.xuni);// 虚拟
                menu.add(0, 3, 3, R.string.xunifujin);// 虚拟附近
                menu.add(0, 4, 4, R.string.weibo);// 返回微博
                return super.onCreateOptionsMenu(menu);
        }

        // 搜索服务
        public class MySearchListener implements MKSearchListener {

                @Override
                public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
                        // TODO Auto-generated method stub

                }

                @Override
                public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
                        // TODO Auto-generated method stub

                }

                @Override
                public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {
                        // TODO Auto-generated method stub

                }

                @Override
                public void onGetPoiResult(MKPoiResult result, int arg1, int arg2) {
                        // TODO Auto-generated method stub
                        if (result == null) {
                                return;
                        }
                        PoiOverlay poioverlay = new PoiOverlay(BaiduMap.this, mMapView);
                        poioverlay.setData(result.getAllPoi());
                        mMapView.getOverlays().add(poioverlay);
                }

                @Override
                public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
                        // TODO Auto-generated method stub

                }

                @Override
                public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {
                        // TODO Auto-generated method stub

                }

        }

        // 菜单选项
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                // TODO Auto-generated method stub
                int item_Id = item.getItemId();
                switch (item_Id) {
                case 0:
                        break;
                case 1:
                        break;
                case 2:
                        break;
                case 3:
                        break;
                case 4:
                        Intent j = new Intent(BaiduMap.this, Main.class);
                        startActivity(j);
                        break;

                }
                return super.onOptionsItemSelected(item);
        }

        @Override
        protected void onDestroy() {
                if (mBMapMan != null) {
                        mBMapMan.destroy();
                        mBMapMan = null;
                }
                super.onDestroy();
        }

        @Override
        protected void onPause() {
                if (mBMapMan != null) {
                        // 终止百度地图API
                        mBMapMan.getLocationManager().removeUpdates(mLocationListener);
                        mLocationOverlay.disableMyLocation();
                        mLocationOverlay.disableCompass(); // 关闭指南针
                        mBMapMan.stop();
                }
                super.onPause();
        }

        // 获得用户焦点
        @Override
        protected void onResume() {
                if (mBMapMan != null) {
                        // 开启百度地图API
                        // 注册定位事件,定位后将地图移动到定位点
//                        mBMapMan.getLocationManager().requestLocationUpdates(
//                                        mLocationListener);
//                        mLocationOverlay.enableMyLocation();
//                        mLocationOverlay.enableCompass(); // 打开指南针
                        mBMapMan.start();
                        Log.i("BaiduMap","------OnResume()-------");
                }
                super.onResume();
        }

        @Override
        protected boolean isRouteDisplayed() {
                // TODO Auto-generated method stub
                return false;
        }

}

原文地址:点击打开链接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值