高德地图——地图图层
来源:互联网 发布:软件精灵 编辑:程序博客网 时间:2024/04/29 13:24
关于申请key等,请参考加载一张简单的高德地图
地图是由多个图层组成,每个图层会显示一部分的地理或交通信息。开发
者可以通过设置 AMap 类,灵活控制图层的显示状态。例如,用户所看到包括
街道、兴趣点、学校、公园等内容的地图展现就是一个图层。实时路况等的展
现也是通过图层来实现的。首先介绍一下比较常用的四种图层:
• 基本地图。
• 自定义图层(这里不做讲解)。
• 实时路况。
• 定位层。
基础地图
3D地图SDK提供三种地图类型:
1.MAP_TYPE_NORMAL
标准地图。地图包含道路、建筑等。
2. MAP_TYPE_SATELLITE
卫星地图。
3. MAP_TYPE_NIGHT
夜景地图(仅3D地图)
AMap是地图的控制类 ,设置基础地图的类型只需要
AMap aMap=mapView.getMap(); aMap.setMapType(AMap.MAP_TYPE_NORMAL);
实时路况
AMap aMap=mapView.getMap(); aMap.setTrafficEnabled(true);
定位层
这里涉及到定位需要从高德官网下载定位的相关jar包,这里使用
AMap_Location_V2.5.0_20160526.jar
这个有些繁琐,但都是固定的模板
// 设置激活/关闭定位的监听 aMap.setLocationSource(this);//在地图上标注我的位置 aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是falseaMap.setMyLocationEnabled(true);//设置当前位置跟随模式//参数://type - style 总共有三种模式,定位,跟随和旋转(这里为跟随)aMap.setMyLocationType(AMap.LOCATION_TYPE_MAP_FOLLOW);
LocationSource 方法如下:
public interface LocationSource {//激活定位 void activate(LocationSource.OnLocationChangedListener var1);//取消定位 void deactivate(); public interface OnLocationChangedListener { void onLocationChanged(Location var1); }}
激活定位,但定位逻辑是由——AMapLocationClient来进行的
@Override public void activate(OnLocationChangedListener onLocationChangedListener) { this.mListener = onLocationChangedListener; if (aMapLocationClient == null) { aMapLocationClient = new AMapLocationClient(this); aMapLocationClientOption = new AMapLocationClientOption();//设置定位回调,处理位置改变 aMapLocationClient.setLocationListener(this);//设置定位模式,推荐使用高精度定位 aMapLocationClientOption .setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);//设置aMapLocationClient的定位OptionaMapLocationClient.setLocationOption(aMapLocationClientOption);//开启定位aMapLocationClient.startLocation(); }
在AMapLocationListener .onLocationChanged()中处理位置改变
public interface AMapLocationListener { void onLocationChanged(AMapLocation var1);}
@Override public void onLocationChanged(AMapLocation aMapLocation) { if (mListener != null && aMapLocation != null) { if (aMapLocation.getErrorCode() == 0) { //这里高德地图进行了高度封装,直接就显示系统小蓝点 mListener.onLocationChanged(aMapLocation); } else { String errText = "定位失败," + aMapLocation.getErrorCode() + ": " + aMapLocation.getErrorInfo(); Log.e("AmapErr", errText); } } }
注意:获取手机位置属于危险权限,需要进行申请,不熟悉的同学请参考
Android6.0权限申请模型
完整代码如下:
package com.hang.hellomapdemo;import android.Manifest;import android.annotation.TargetApi;import android.content.pm.PackageManager;import android.os.Bundle;import android.support.v4.app.ActivityCompat;import android.support.v7.app.AppCompatActivity;import android.util.Log;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.LocationSource;import com.amap.api.maps.MapView;public class SimpleLocationActivity extends AppCompatActivity implements LocationSource, AMapLocationListener { MapView mapView; AMap aMap; OnLocationChangedListener mListener; AMapLocationClient aMapLocationClient; AMapLocationClientOption aMapLocationClientOption; final int REQUEST_PERMISSION_LOCATION = 10; @TargetApi(23) public void applyPermission() { ActivityCompat.requestPermissions(SimpleLocationActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_PERMISSION_LOCATION); } @TargetApi(23) @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case REQUEST_PERMISSION_LOCATION: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { aMap.setLocationSource(this); //在地图上标注我的位置 aMap.getUiSettings().setMyLocationButtonEnabled(true); // 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false aMap.setMyLocationEnabled(true); //设置定位类型 AMap.LOCATION_TYPE_MAP_FOLLOW:追踪定位 aMap.setMyLocationType(AMap.LOCATION_TYPE_MAP_FOLLOW); } else { Toast.makeText(SimpleLocationActivity.this, "没有获取权限,无法完成定位~", Toast.LENGTH_LONG).show(); } } break; default: break; } super.onRequestPermissionsResult(requestCode, permissions, grantResults); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mapView = new MapView(this); aMap = mapView.getMap(); setContentView(mapView); mapView.onCreate(savedInstanceState); applyPermission(); } @Override protected void onResume() { super.onResume(); mapView.onResume(); } @Override protected void onPause() { super.onPause(); mapView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } @Override public void activate(OnLocationChangedListener onLocationChangedListener) { this.mListener = onLocationChangedListener; if (aMapLocationClient == null) { aMapLocationClient = new AMapLocationClient(this); aMapLocationClientOption = new AMapLocationClientOption(); aMapLocationClient.setLocationListener(this); aMapLocationClientOption .setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); aMapLocationClient.setLocationOption(aMapLocationClientOption); aMapLocationClient.startLocation(); } } @Override public void deactivate() { mListener = null; if (aMapLocationClient != null) { aMapLocationClient.stopLocation(); aMapLocationClient.onDestroy(); } } @Override public void onLocationChanged(AMapLocation aMapLocation) { if (mListener != null && aMapLocation != null) { if (aMapLocation.getErrorCode() == 0) { mListener.onLocationChanged(aMapLocation);// 显示系统小蓝点 } else { String errText = "定位失败," + aMapLocation.getErrorCode() + ": " + aMapLocation.getErrorInfo(); Log.e("AmapErr", errText); } } }}
0 0
- 高德地图——地图图层
- 高德地图叠加google的地图图层
- 高德地图——地图缩放
- iOS开发——项目中的地图跳转(苹果地图,百度地图,高德地图)
- Android简单实现 高德地图的定位与显示,点击按钮切换地图图层
- Android 高德地图——地图展示
- Android 高德地图——地图定位
- Android 高德地图——地图模拟导航
- 安卓开发——Intent跳转地图应用(百度地图、高德地图)
- 高德地图-初始化地图
- 高德地图 室内地图
- 高德地图——路线规划
- 高德地图——标记
- 高德地图——搜索
- 高德地图——查询天气
- 高德地图——地理围栏
- 高德地图——申请Key
- 高德地图——搜索
- exchange two numbers in each line
- 自定义下拉刷新
- SQL JOIN各类关系图
- redis常用命令
- memcache
- 高德地图——地图图层
- java线程的某些知识
- 一种可以避免数据迁移的分库分表scale-out扩容方式
- 一致性HASH算法的JAVA实现
- xml
- 利用原生态PHP 解析Execl
- VMware虚拟机备份恢复工具DP 5.8应用部署视频教程
- 红黑树(Red Black Tree)
- 仿映客点赞效果 点赞上升动画&&全屏点赞