Android 百度地图定位 代码

package com.ry.mybaidumapdemo;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity  {


    public  MapView bmapView = null;
    public BaiduMap baiduMap = null;

    //定位的相关声明
    public LocationClient LocationClient = null;

    //自定义图标
    BitmapDescriptor mCurrentMark = null;
    boolean isFirstLoc = true; //是否是首次定位

    public BDLocationListener myListener = new BDLocationListener() {

        @Override
        public void onReceiveLocation(BDLocation location) {
            //MapView 销毁后不再处理 接收新的位置
            if(location==null||bmapView==null) {

                return;
            }

            MyLocationData locData = new MyLocationData.Builder().accuracy
                    (location.getRadius()).direction(100).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();

            //设置定位数据
            baiduMap.setMyLocationData(locData);

            if(isFirstLoc) { //第一次定位

                isFirstLoc=!isFirstLoc; //改变值  如果是false 则进不来了

                LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());


                MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16);   //设置地图中心点以及 缩放级别
                baiduMap.animateMapStatus(u);
            }

        }

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

        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplicationContext()); //初使化context信息
        setContentView(R.layout.activity_main);
        bmapView = (MapView) findViewById(R.id.bmapView);
        bmapView.showZoomControls(true); //设置是否显示缩放控件

        baiduMap=bmapView.getMap();

        //开启定位图层
        baiduMap.setMyLocationEnabled(true);
        LocationClient = new LocationClient(getApplicationContext());//实例化 LocationClient类
        LocationClient.registerLocationListener(myListener);//注册监听函数
        //设置定位参数
        this.setLocationOption();
        LocationClient.start(); //开启定位
    }



    /**
     * 设置定位参数
     */
    private void setLocationOption() {

        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true); //打开Gps
        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//设置成定位模式
        option.setCoorType("bd09ll"); //返回的结果 是百度的经纬度,默认值 gcj02
        option.setScanSpan(5000);//设置发起定位 请求的时间隔为5000ms
        option.setIsNeedAddress(true);//返回的定位结果包含地址信息
        option.setNeedDeviceDirect(true);//返回的定位结果 包含手机机头的方向
        LocationClient.setLocOption(option);

    }




    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  
        bmapView.onDestroy();  
        bmapView=null;

    }  
    @Override  
    protected void onResume() {  
        super.onResume();  
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
        bmapView.onResume();  

        }  
    @Override  
    protected void onPause() {  
        super.onPause();  
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
        bmapView.onPause(); 
        }









    }




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值