Android高德地图配置及实现定位,目的地路线规划的路线绘制

Android高德地图配置及实现定位,目的地路线规划的路线绘制,第1张

概述1.第一步进行高德地图的配置  1)高德地图控制台https://lbs.amap.com/dev/index创建应用和所需要的key(注意applicationId和签名中的SHA1正确,比如用     正式的签名配的SHA1但是编译项目却用debug的默认签名会出问题)   //清单文件配置<applicatio 1.第一步进行高德地图的配置

    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高德地图配置及实现定位,目的地路线规划的路线绘制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1111912.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存