显示定位蓝点

来源:互联网 发布:mac电脑刷机数据恢复 编辑:程序博客网 时间:2024/04/28 13:55

官方文档是最重要的学习源,这篇博客参考官方文档显示定位蓝点
在显示定位蓝点时,一个非常重要的事情是申请定位权限,不然会定位到莫名其妙的位置。官方文档对于定位蓝点其他的一些控制有详细说明。
核心代码

    private void initMap() {        Log.d(TAG, "initMap: 初始化高德地图");        if (aMap == null) {            aMap = mMapView.getMap();        }        //初始化定位蓝点样式类        myLocationStyle = new MyLocationStyle();        //只定位一次。        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE);        //设置定位蓝点的Style        aMap.setMyLocationStyle(myLocationStyle);        // 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。        aMap.setMyLocationEnabled(true);        //设置默认定位按钮是否显示,非必需设置。        aMap.getUiSettings().setMyLocationButtonEnabled(true);    }

申请权限

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {            Log.d(TAG, "onCreate: 申请定位权限");            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION}, 1);        } else {            initMap();        }     @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        switch (requestCode) {            case 1:                if (grantResults.length > 0) {                    boolean flag = true;                    for (int i = 0; i < grantResults.length; i++) {                        if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {                            Log.d(TAG, "onRequestPermissionsResult: 未授权 " + permissions[i]);                            toast("未给予权限" + permissions[i]);                            flag=false;                        }                    }                    if(flag){                        toast("授权通过");                        initMap();                    }                }                break;            default:        }    }       

所有代码

package cn.net.pikachu.amapdemo.demo2;import android.Manifest;import android.content.pm.PackageManager;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import com.amap.api.maps.AMap;import com.amap.api.maps.MapView;import com.amap.api.maps.model.MyLocationStyle;import cn.net.pikachu.amapdemo.BaseActivity;import cn.net.pikachu.amapdemo.R;public class Demo2Activity extends BaseActivity {    private static final String TAG = "Demo2Activity";    private MapView mMapView;    private AMap aMap;    private MyLocationStyle myLocationStyle;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_demo2);        //获取地图控件引用        mMapView = findViewById(R.id.mapView);        //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图        mMapView.onCreate(savedInstanceState);        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {            Log.d(TAG, "onCreate: 申请定位权限");            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION}, 1);        } else {            initMap();        }    }    @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        switch (requestCode) {            case 1:                if (grantResults.length > 0) {                    boolean flag = true;                    for (int i = 0; i < grantResults.length; i++) {                        if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {                            Log.d(TAG, "onRequestPermissionsResult: 未授权 " + permissions[i]);                            toast("未给予权限" + permissions[i]);                            flag=false;                        }                    }                    if(flag){                        toast("授权通过");                        initMap();                    }                }                break;            default:        }    }    private void initMap() {        Log.d(TAG, "initMap: 初始化高德地图");        if (aMap == null) {            aMap = mMapView.getMap();        }        //初始化定位蓝点样式类        myLocationStyle = new MyLocationStyle();        //只定位一次。        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE);        //设置定位蓝点的Style        aMap.setMyLocationStyle(myLocationStyle);        // 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。        aMap.setMyLocationEnabled(true);        //设置默认定位按钮是否显示,非必需设置。        aMap.getUiSettings().setMyLocationButtonEnabled(true);    }    @Override    protected void onDestroy() {        super.onDestroy();        //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图        mMapView.onDestroy();    }    @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 onSaveInstanceState(Bundle outState) {        super.onSaveInstanceState(outState);        //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态        mMapView.onSaveInstanceState(outState);    }}
原创粉丝点击