Android---配置高德地图

高德地图配置

  • 第一步:需要用的jar包
  • 第二步:需要用的集类
  • 第三步:需要用到的权限
  • 第四步:嵌入代码
  • 第五步:实现效果

第一步:需要用的jar包
这里写图片描述

第二步:需要用的集类
这里写图片描述

第三步:需要用到的权限
这里写图片描述

<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>```

**第四步:嵌入代码**
```public class MapActivity extends AppCompatActivity {

    private AMap aMap;
    private MapView mapView;
    private boolean isUpdate = false;
    private SingleOverlay mMyOverlay;//我的位置
    private SingleOverlay mPinOverlay;//大头针
    private Marker mPinMarker;//大头针对应的marker
    private Circle mCircle;//地图上的圆
    private LatLng mStartPosition;

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

    /**
     * 初始化地图
     */
    private void initMap(Bundle arg0) {
        mapView = (MapView) findViewById(R.id.mapView);
        mapView.onCreate(arg0);// 此方法必须重写
        if (aMap == null) {
            aMap = mapView.getMap();
        }
//        aMap.getUiSettings().setZoomControlsEnabled(false);
        if (mMyOverlay == null)
            mMyOverlay = new SingleOverlay(this, aMap);
        mMyOverlay.setIcon(R.drawable.icon_map_current_location);

        if (mPinOverlay == null)
            mPinOverlay = new SingleOverlay(this, aMap);
        mPinOverlay.setIcon(R.drawable.icon_map_pin);
        //启动定位
        Locate locate = new Locate(this);
        locate.start();
        locate.setOnLocationListener(new Locate.OnLocationListener() {
            @Override
            public void onReceiveLocation(AMapLocation location) {
                LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
                mStartPosition = latLng;
                addUserMarker(latLng);
                addPoiMrker(latLng);
                Toast.makeText(MapActivity.this, "000" + location, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onReceiveFail() {
                Toast.makeText(MapActivity.this, "0002222" , Toast.LENGTH_SHORT).show();
            }
        });
        //回到当前位置
        findViewById(R.id.current_local).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Marker marker = mMyOverlay.getMyMarker();
                if (marker != null) {
                    mPinOverlay.move(mMyOverlay.getMyMarker().getPosition());
                }
            }
        });
        //地图移动事件
        aMap.setOnCameraChangeListener(new AMap.OnCameraChangeListener() {
            @Override
            public void onCameraChange(CameraPosition cameraPosition) {
                mCircle.setCenter(cameraPosition.target);
                mPinMarker.setPosition(cameraPosition.target);
                Locate locate = new Locate(MapActivity.this);
                //把经纬度转换成地址信息
                locate.searchAddress(cameraPosition.target.latitude, cameraPosition.target.longitude);
                locate.setOnGeoSearchLintener(new Locate.OnGeoSearchLintener() {
                    @Override
                    public void onRegeocodeSearched(RegeocodeResult arg0, int arg1) {
                        if (arg0 != null) {
                            String address = arg0.getRegeocodeAddress().getFormatAddress();
                            Toast.makeText(MapActivity.this, "++" + address, Toast.LENGTH_SHORT).show();
                        }
                    }
                });
            }

            @Override
            public void onCameraChangeFinish(CameraPosition cameraPosition) {
            }
        });
        //地图长按事件
        aMap.setOnMapLongClickListener(new AMap.OnMapLongClickListener() {
            @Override
            public void onMapLongClick(LatLng latLng) {
                mPinOverlay.move(latLng);//平移地图,不缩放地图
//                mPinOverlay.moveAndZoom(latLng);//平移地图 ,缩放地图
                Locate locate = new Locate(MapActivity.this);
                //把经纬度转换成地址信息
                locate.searchAddress(latLng.latitude, latLng.longitude);
                locate.setOnGeoSearchLintener(new Locate.OnGeoSearchLintener() {
                    @Override
                    public void onRegeocodeSearched(RegeocodeResult arg0, int arg1) {
                        if (arg0 != null) {
                            String address = arg0.getRegeocodeAddress().getFormatAddress();
                            Toast.makeText(MapActivity.this, "--" + address, Toast.LENGTH_SHORT).show();
                        }
                    }
                });
            }
        });
    }

    /**
     * 地图上显示当前用户的位置
     */
    private void addUserMarker(LatLng latLng) {
        PoiItem item = new PoiItem();
        item.setTitle("title");
        item.setSnippet("snippet");
        item.setLatLng(latLng);
        mMyOverlay.removeFromMap();
        mMyOverlay.setPoi(item);
        mMyOverlay.addToMap();//显示我的位置
        mMyOverlay.zoomToSpan();
    }

    /**
     * 地图上显示大头针的位置
     */
    private void addPoiMrker(LatLng latLng) {
        PoiItem item = new PoiItem();
        item.setTitle("title");//title 和 snippet必须添加否则气泡不显示
        item.setSnippet("snippet");
        item.setLatLng(latLng);
        mPinOverlay.setPoi(item);//显示大头针位置
        mPinOverlay.addToMap();
        mPinMarker = mPinOverlay.getMyMarker();
        mPinMarker.setAnchor(0.5f, 1.27f);
        mCircle = mPinOverlay.addCircle(item.getLatLng(), this);
    }
}

第五步:实现效果
这里写图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页