第三方高德地图

1.申请key值

https://lbs.amap.com/api/android-sdk/guide/create-project/android-studio-create-project?tdsourcetag=s_pcqq_aiomsg

2.权限

   

   

   

   

   

   

   

   

   

3.配置清单文件

4.xml布局文件

    xmlns:app="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity">

   

        android:id="@+id/map"

        android:layout_width="match_parent"

        android:layout_height="match_parent"/>

6.代码

package com.qgs.gd;

import android.graphics.Color;

import android.os.PersistableBundle;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Toast;

import com.amap.api.location.AMapLocation;

import com.amap.api.location.AMapLocationClient;

import com.amap.api.location.AMapLocationClientOption;

import com.amap.api.location.AMapLocationListener;

import com.amap.api.maps.AMap;

import com.amap.api.maps.CameraUpdate;

import com.amap.api.maps.CameraUpdateFactory;

import com.amap.api.maps.LocationSource;

import com.amap.api.maps.MapView;

import com.amap.api.maps.model.BitmapDescriptor;

import com.amap.api.maps.model.MyLocationStyle;

public class MainActivity extends AppCompatActivity implements AMapLocationListener,LocationSource {

    private MapView mapView;

    private MyLocationStyle mMyLocationStyle;

    AMap aMap;

    OnLocationChangedListener mListener;

    AMapLocationClient mlocationClient;

    AMapLocationClientOption mLocationOption;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        mapView = findViewById(R.id.map);

        mapView.onCreate(savedInstanceState);

        if (aMap == null) {

            aMap = mapView.getMap();

        }

        initLocation();

    }

    private void initLocation() {

        mMyLocationStyle = new MyLocationStyle();//初始化定位蓝点样式类

        aMap.getUiSettings().setMyLocationButtonEnabled(true);//设置默认定位按钮是否显示,非必需设置。

//        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER);

//        myLocationStyle.interval(5000L); //设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。

        mMyLocationStyle.strokeColor(Color.parseColor("#2c78c2"));

        mMyLocationStyle.radiusFillColor(Color.parseColor("#A6FFFFFF"));

        aMap.setMyLocationStyle(mMyLocationStyle);//设置定位蓝点的Style

        CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(18);//缩放级别

        aMap.moveCamera(cameraUpdate);

        // 设置定位监听

        aMap.setLocationSource(this);

        // 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false

        aMap.setMyLocationEnabled(true);

        // 设置定位的类型为定位模式,有定位、跟随或地图根据面向方向旋转几种

        aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);

    }

    @Override

    protected void onResume() {

        super.onResume();

        mapView.onResume();

    }

    @Override

    protected void onPause() {

        super.onPause();

        mapView.onPause();

    }

    @Override

    protected void onSaveInstanceState(Bundle outState) {

        super.onSaveInstanceState(outState);

        mapView.onSaveInstanceState(outState);

    }

    @Override

    public void onLocationChanged(AMapLocation aMapLocation) {

        Log.e("===" + aMapLocation.getLatitude(), "====" + aMapLocation.getLongitude());

        if (mListener != null && aMapLocation != null) {

            if (aMapLocation != null

                    && aMapLocation.getErrorCode() == 0) {

                mListener.onLocationChanged(aMapLocation);// 显示系统小蓝点

                String country = aMapLocation.getCountry();//国家信息

                String city = aMapLocation.getCity();//获取城市

                double tude = aMapLocation.getLatitude();//维度

                double longitude = aMapLocation.getLongitude();//经度

                String city_code = aMapLocation.getCityCode();

                String dis = aMapLocation.getDistrict();//城区信息

                String street = aMapLocation.getStreet();//街道信息

                String num = aMapLocation.getStreetNum();//街道门牌号信息

                aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表

                aMapLocation.getLatitude();//获取纬度

                aMapLocation.getLongitude();//获取经度

                aMapLocation.getAccuracy();//获取精度信息

                aMapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。

                aMapLocation.getCountry();//国家信息

                aMapLocation.getProvince();//省信息

                aMapLocation.getCity();//城市信息

                aMapLocation.getDistrict();//城区信息

                aMapLocation.getStreet();//街道信息

                aMapLocation.getStreetNum();//街道门牌号信息

                aMapLocation.getCityCode();//城市编码

                aMapLocation.getAdCode();//地区编码

                Toast.makeText(MainActivity.this, country + "==" + city +"=="+street+ "==="+dis +"=="+num+ city_code + "==" + tude + "===" + longitude, Toast.LENGTH_SHORT).show();

            } else {

                String errText = "定位失败," + aMapLocation.getErrorCode() + ": " + aMapLocation.getErrorInfo();

                Log.e("AmapErr", errText);

            }

        }

    }

    @Override

    public void activate(OnLocationChangedListener onLocationChangedListener) {

        mListener = onLocationChangedListener;

        if (mlocationClient == null) {

            //初始化定位

            mlocationClient = new AMapLocationClient(this);

            //初始化定位参数

            mLocationOption = new AMapLocationClientOption();

            //设置定位回调监听

            mlocationClient.setLocationListener(this);

            //设置为高精度定位模式

            mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);

            //设置定位参数

            mlocationClient.setLocationOption(mLocationOption);

            // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,

            // 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求

            mLocationOption.setInterval(2000L);

            // 在定位结束后,在合适的生命周期调用onDestroy()方法

            // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除

            mlocationClient.startLocation();//启动定位

        }

    }

    @Override

    public void deactivate() {

        mListener = null;

        if (mlocationClient != null) {

            mlocationClient.stopLocation();

            mlocationClient.onDestroy();

        }

        mlocationClient = null;

    }

    @Override

    protected void onDestroy() {

        super.onDestroy();

        super.onDestroy();

        //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图

        mapView.onDestroy();

        if(null != mlocationClient){

            mlocationClient.onDestroy();

        }

    }

}

你可能感兴趣的:(第三方高德地图)