1)高德地图控制台https://lbs.amap.com/dev/index创建应用和所需要的key(注意applicationID 和 签名中的SHA1 正确,比如用 正式的签名配的SHA1但是编译项目却用deBUG的默认签名会出问题)
//清单文件配置<application> <Meta-data androID:name="com.amap.API.v2.APIkey" androID:value="申请的Key"/></application>
2) gradle配置所需要的依赖包
app下的build.gradle文件中配置dependencIEs { //....... //3D地图so及jar compile 'com.amap.API:3dmap:latest.integration' //定位功能 compile 'com.amap.API:location:latest.integration' //搜索功能 compile 'com.amap.API:search:latest.integration'}
2.UI,初始化,定位代码编写xml代码
<?xml version="1.0" enCoding="utf-8"?><com.amap.API.maps.MapVIEw xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/map_vIEw" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" />
activity代码
private MapVIEw mapVIEw;//地图显示vIEwprivate AMap aMap;//地图控制器private MyLocationStyle myLocationStyle;//地图定位样式 @OverrIDeprotected voID onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_map_base); mapVIEw = (MapVIEw) findVIEwByID(R.ID.map_vIEw); mapVIEw.onCreate(savedInstanceState); if (aMap == null){ aMap = mapVIEw.getMap(); } /** * 设置一些amap的属性 */ aMap.getUiSettings().setZoomControlsEnabled(false);//是否可以缩放 aMap.moveCamera(CameraUpdateFactory.zoomTo(15));//缩放比例 //地图文字的Z轴指数,设置为2可以将地图底图文字设置在添加的覆盖物之上 aMap.setMapTextZIndex(2); UiSettings uiSettings = aMap.getUiSettings();//地图的UI设置控制器 uiSettings.setCompassEnabled(false);// 设置指南针是否显示 uiSettings.setZoomControlsEnabled(false);// 设置缩放按钮是否显示 uiSettings.setScaleControlsEnabled(true);// 设置比例尺是否显示 uiSettings.setRotateGesturesEnabled(true);// 设置地图旋转是否可用 uiSettings.setTiltGesturesEnabled(true);// 设置地图倾斜是否可用 uiSettings.setMyLocationbuttonEnabled(true);// 设置默认定位按钮是否显示 myLocationStyle = new MyLocationStyle(); //设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为秒。 myLocationStyle.interval(3000); //设置连续定位、蓝点不会移动到地图中心点,定位点依照设备方向旋转,并且蓝点会跟随设备移动。 //具体场景可根据高德API查看 myLocationStyle.myLocationType(MyLocationStyle .LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER); myLocationStyle.showMyLocation(true);//显示定位蓝点 //设置图标 myLocationStyle.myLocationIcon(BitmapDescriptorFactory. fromresource(R.mipmap.navi_map_gps_locked)); //设置圆圈颜色 myLocationStyle.radiusFillcolor(0x70ffffff); //设置边框颜色 myLocationStyle.strokecolor(0xffffffff); aMap.setMyLocationStyle(myLocationStyle);//关联myLocationStyle //监听定位信息的回调 aMap.setonMyLocationchangelistener(new OnMyLocationchangelistener()); //开启定位,设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认false。 aMap.setMyLocationEnabled(true); }
@OverrIDe protected voID onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //在activity执行onSaveInstanceState时执行mMapVIEw.onSaveInstanceState (outState), //保存地图当前的状态 mapVIEw.onSaveInstanceState(outState); } @OverrIDe protected voID onResume() { super.onResume(); //在activity执行onResume时执行mMapVIEw.onResume (),重新绘制加载地图 mapVIEw.onResume(); } @OverrIDe protected voID onPause() { super.onPause(); //在activity执行onPause时执行mMapVIEw.onPause (),暂停地图的绘制 mapVIEw.onPause(); } @OverrIDe protected voID onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapVIEw.onDestroy(),销毁地图 mapVIEw.onDestroy(); }
private boolean isFirstLocation = true;//第一次定位成功class OnMyLocationchangelistener implements AMap.OnMyLocationchangelistener{ @OverrIDe //定位信息的回调监听 public voID onMyLocationChange(Location location) { if (location == null){ return; } Bundle bundle = location.getExtras(); if (bundle != null && (bundle.getInt("errorCode",-1)) == 0){//定位成功 //获取定位数据 //经度 double lat = location.getLatitude(); //纬度 double lng = location.getLongitude(); //实现第一次定位成功,将地图中心移动到定位点 if (isFirstLocation){ isFirstLocation = false; CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(lat,lng),17); aMap.moveCamera(cameraUpdate);//将地图移动到定位坐标点 } }else{ //错误信息 String error = bundle.get("errorInfo") Log.e("Map",error); } }}
3.路线规划查询路径private RouteSearch mRouteSearch;//路线查询器private voID initSearch() { mRouteSearch = new RouteSearch(this); //设置数据回调监听器 mRouteSearch.setRouteSearchListener(new OnRouteSearchListener()); //设置开始位置坐标点(注意经纬度不能写反,会报错1800(只能规划到中国区域里的地图路线)) LatLonPoint startPoint new LatLonPoint(30.321842,120.141216); //设置目的地坐标点 LatLonPoint endPoint = new LatLonPoint(30.321842,120.141216); //查询信息对象 RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(startPoint,endPoint); //设置搜索参数 1.fromAndTo 路径的起点终点 2.路径规划的策略(这里是驾车模式,具体看高德API) 3.途 //经点,可选 4.避让区域,可选, 5.避让道路 ,可选 RouteSearch.DriveRoutequery query = new RouteSearch.DriveRoutequery(fromAndTo,RouteSearch.DRIVING_SINGLE_DEFAulT,null,null,""); //开始异步查询 mRouteSearch.calculateDriveRouteAsyn(query); }class OnRouteSearchListener implements RouteSearch.OnRouteSearchListener{ @OverrIDe public voID onDriveRouteSearched(DriveRouteResult driveRouteResult, int rCode) { if (rCode == 1000){//获取规划路线成功,获取到的是了,路线坐标点的集合 List<DrivePath> paths = driveRouteResult.getPaths(); //创建存储坐标点的集合 List<LatLng> latLngs = new ArrayList<>(); //遍历获取规划的所有路线坐标点 for (DrivePath mDrivePath : paths) { for (DriveStep mDriveStep : mDrivePath.getSteps()) { for (LatLonPoint mLatLonPoint : mDriveStep.getpolyline()) { latLngs.add(new LatLng(mLatLonPoint.getLatitude(),mLatLonPoint.getLongitude())); } } } //先清除一下,避免重复显示 aMap.clear(); //绘制起始位置和目的地marker aMap.addMarker(new MarkerOptions() .icon(BitmapDescriptorFactory.fromresource(iconRes)) .position(new LatLng(经度,纬度))); aMap.addMarker(new MarkerOptions() .icon(BitmapDescriptorFactory.fromresource(iconRes)) .position(new LatLng(经度,纬度))); //绘制规划路径路线 aMap.addpolyline(new polylineoptions() //路线坐标点的集合 .addAll(latLngs) //线的宽度 .wIDth(30) .color(getResources().getcolor(R.color.blue))//设置画线的颜色 //显示完整包含所有marker地图路线 LatLngBounds.Builder builder = new LatLngBounds.Builder(); for (int i = 0; i < latLngs.size(); i++) { builder.include(latLngs.get(i)); } //显示全部marker,第二个参数是四周留空宽度 aMap.moveCamera(CameraUpdateFactory.newLatLngBounds(builder.build(),200)); } }}
Over~
总结以上是内存溢出为你收集整理的Android高德地图配置及实现定位,目的地路线规划的路线绘制全部内容,希望文章能够帮你解决Android高德地图配置及实现定位,目的地路线规划的路线绘制所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)