Android 第三方框架之高德地图

1、简介

最近项目中又要用到地图的定位了,怎么说呢,在实际的项目中地图用的还是挺多的,所以说这个咋们还是有必要好好去了解一下的,毕好好总结一下,下次再遇到直接复制黏贴就好了。

2、集成使用过程

 1. 登录 高德地图官网,注册成为开发者账户 

      这里怎么注册成为开发者可以参照官网,有提示的比较简单,而且很容易审核通过的

2、创建应用

      应用管理  --> 创建应用 ------> 填写包名信息

点击添加key 进行key的添加 

 

讲一下如何获取SHA1吧

1.在右侧栏里找到grandle界面

2.按以下路径,查找到signingReport文件

3. 然后点击右下角的gradle console界面,里面就有SHA1码啦

接下来就是把上表给填写完整了,到这里基本的注册和创建Debug应用的准备算是准备好了。

 3. 应用中使用

 第 1 步,配置AndroidManifest.xml

a  声明Service组件

请在application标签中声明service组件,每个app拥有自己单独的定位service。 

<service android:name="com.amap.api.location.APSService"></service>

b. 设置权限

<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!--用于写入缓存数据到扩展存储卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<!--用于申请获取蓝牙信息进行室内定位-->
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

c. 设置高德Key

 d.代码

    private void initMapAndShow(Bundle savedInstanceState) {
        //创建地图 重要
        mMapView.onCreate(savedInstanceState);
        if (mAMap == null) {
            mAMap = mMapView.getMap();
        }
        // 初始化定点蓝图样式
        MyLocationStyle myLocationStyle = new MyLocationStyle();
        // 设置定位的频率 2秒一次
        myLocationStyle.interval(2000);
        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER);
        myLocationStyle.strokeColor(STROKE_COLOR);
        myLocationStyle.strokeWidth(0);
        myLocationStyle.radiusFillColor(FILL_COLOR);
        //设置定位蓝点的Style
        mAMap.setMyLocationStyle(myLocationStyle);
        // 显示定点蓝图
        mAMap.setMyLocationEnabled(true);
        // 设置放大缩小的控制是否可见
        mAMap.getUiSettings().setZoomControlsEnabled(false);
        mAMap.setOnMyLocationChangeListener(this);
    }

    @Override
    public void onMyLocationChange(Location location) {
        if (location  != null) {
            // 我的地址改变时的回调
            mTvShowLat.setText(getString(R.string.show_lat,String.valueOf(location.getLatitude())));
            mTvShowLang.setText(getString(R.string.show_lang,String.valueOf(location.getLongitude())));
            // 第一次时  设置时间定位到当前
            if (myLocation == null) {
                myLocation = location;
                if (carLocationLatlng == null) {
                    mAMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(myLocation.getLatitude(), myLocation.getLongitude()), 14));
                }
            }
        }else {
            UIUtils.showToast(getString(R.string.error_map_location));
        }
    }


    @Override
    protected void onDestroy() {
        // 这里切忌  有些执行的动作需要在 onDestroy()
        // 不然让onDestroy执行完了之后 有的信息都会被置空了
        if (mMapView != null) {
            mMapView.onDestroy();
        }
        super.onDestroy();
    }

e. 效果

猜你喜欢

转载自blog.csdn.net/crazyZhangxl/article/details/82215481
今日推荐