简单调用Android百度地图API SDK并显示所在定位

1 注册百度地图开发者账号,并完成应用的开发密钥申请

获取sha1

简单调用Android百度地图API SDK并显示所在定位_第1张图片

提交创建应用

简单调用Android百度地图API SDK并显示所在定位_第2张图片

获取AK

简单调用Android百度地图API SDK并显示所在定位_第3张图片

2 Android Studio配置

下载sdk

简单调用Android百度地图API SDK并显示所在定位_第4张图片

app目录的build.gradle的dependencies块中生成了工程所依赖的jar文件的对应说明,则配置成功

简单调用Android百度地图API SDK并显示所在定位_第5张图片

3 核心代码(官方网站全都有)官网教程

AndroidManifest.xml




    
        
            
                

                
            
        

        

        

    



    
    
    
    

    
    
    
    

    
    
    
    

MainActivity.java

package com.example.baidupositioning;

import androidx.appcompat.app.AppCompatActivity;

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

import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;

public class MainActivity extends Activity {
    private MapView mMapView = null;
    private BaiduMap mBaiduMap;
    private LocationClient mLocationClient;
    private boolean ifFirst = true; // 是否放大层级

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mMapView = findViewById(R.id.bmapView);
        mBaiduMap = mMapView.getMap();
        mLocationClient = new LocationClient(this);

        // 注册LocationListener监听器
        MyLocationListener myLocationListener = new MyLocationListener();
        mLocationClient.registerLocationListener(myLocationListener);

        // 开启地图的定位图层
        mBaiduMap.setMyLocationEnabled(true);

        LocationClientOption option = new LocationClientOption();
        //可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
        option.setOpenGps(true); // 打开gps
        option.setCoorType("bd09ll"); // 设置坐标类型
        option.setScanSpan(1000);

        option.setIsNeedAddress(true);

        // 设置locationClientOption
        mLocationClient.setLocOption(option);

        // 开启地图定位图层
        mLocationClient.start();
    }

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

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

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

    //通过继承抽象类BDAbstractListener并重写其onReceieveLocation方法来获取定位数据,并将其传给MapView
    public class MyLocationListener extends BDAbstractLocationListener {
        @Override
        public void onReceiveLocation(BDLocation location) {
            //mapView 销毁后不在处理新接收的位置
            if (location == null || mMapView == null) {
                return;
            }
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                    // 此处设置开发者获取到的方向信息,顺时针0-360
                    .latitude(location.getLatitude())
                    .latitude(30.583239)    // 纬度
                    .longitude(location.getLongitude())
                    .longitude(114.336702)  // 经度
                    .direction(location.getDirection())
                    .build();
            mBaiduMap.setMyLocationData(locData);

            // 通过MyLocationConfiguration类来构造
            // 包括定位的属性,定位模式、是否开启方向、设置自定义定位图标、精度圈填充颜色以及精度圈边框颜色5个属性。
            // 参数介绍:
            // 1.定位模式 地图SDK支持三种定位模式:NORMAL(普通态), FOLLOWING(跟随态), COMPASS(罗盘态)
            // 2.是否开启方向
            // 3.自定义定位图标 支持自定义定位图标样式,替换定位icon
            // 4.自定义精度圈填充颜色
            // 5.自定义精度圈边框颜色
            MyLocationConfiguration configuration = new MyLocationConfiguration(
                    MyLocationConfiguration.LocationMode.COMPASS,
                    false,
                    null,
                    0xAAFFFF88,
                    0xAA00FF00);
            // 在定义了以上属性之后,通过如下方法来设置生效:
            mBaiduMap.setMyLocationConfiguration(configuration);

            if (ifFirst) {
                LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
                MapStatus.Builder builder = new MapStatus.Builder();
                builder.target(ll);
                builder.zoom(20.0f);    // 放大为20层级
                mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
                //放大层级
                ifFirst = false;
            }

        }
    }

}

activity_main.xml 




    
    
    
    
    
    
    
    

    

4 界面展示

湖北大学5号教学楼

简单调用Android百度地图API SDK并显示所在定位_第6张图片

 5 代码仓库

源码地址:地址链接

你可能感兴趣的:(android,百度,java)