百度LBS开放平台Android SDK产品使用

使用百度地图需要
baidumapapi_v3_1_1.jar、locSDK_3.1.jar两个jar
libBaiduMapSDK_v3_1_1.so、liblocSDK3.so

权限:到百度LBS开放平台去申请key

1、百度地图基本用法
      SDKInitializer.initialize(this.getApplication());
      判断Intene是否有参数
      Intent intent = getIntent();
      if (intent.hasExtra("x") && intent.hasExtra("y")) {
       // 当用intent参数时,设置中心点为指定点
       Bundle b = intent.getExtras();
       //设置中心点坐标
       LatLng p = new LatLng(b.getDouble("y"), b.getDouble("x"));
       mapView = new MapView(this,new BaiduMapOptions().mapStatus(new MapStatus.Builder().target(p).build()));
      } else {
       mapView = new MapView(this, new BaiduMapOptions());
      }
      setContentView(mapView);
      baiduMap = mapView.getMap();

2、基于MapFragment的基本地图
       继承FragmentActivity
       //设置地图的状态
       .overlook();地图俯仰角
       .zoom();地图缩放级别
        LatLng cenpt = new LatLng(29.806651,121.606983);设置经纬度
       .target(cenpt)设定坐标
       MapStatus ms = new MapStatus.Builder().overlook(-20).zoom(100).build();
 
       .compassEnabled();设置是否允许指南针 默认允许
       .zoomControlsEnabled();是否显示缩放控件
       BaiduMapOptions bo = new BaiduMapOptions().mapStatus(ms).compassEnabled(false).zoomControlsEnabled(false);
       map = SupportMapFragment.newInstance(bo);
       FragmentManager manager = getSupportFragmentManager();
       manager.beginTransaction().add(R.id.map, map, "map_fragment").commit();
 
3、多地图展示
      第一步:在xml中设置多个展示框
      第二步:设置中心点坐标GEO_BEIJING

第三步:创建地图
      MapStatusUpdate u1 = MapStatusUpdateFactory.newLatLng(GEO_BEIJING);
      SupportMapFragment map1 = (SupportMapFragment) (getSupportFragmentManager().findFragmentById(R.id.map1));
      map1.getBaiduMap().setMapStatus(u1);

地图图层显示控制
      //普通图层: baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
      //卫星图层:baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
      //交通图层:baiduMap.setTrafficEnabled(((CheckBox) v).isChecked());

//地图的操作功能[截图、缩放、旋转、视角控制、点击某个位置获取经纬度]
      zoom缩放大小  rotate旋转角度 overlook俯视角度
      -----------------------------------------------------------------------------------------------
      处理地图缩放   缩放级别[3.0--19.0]
      float zoomLevel = Float.parseFloat(t.getText().toString());//得到缩放的值
      //定义MapStatusUpdate对象,以便描述地图状态将要发生的变
      MapStatusUpdate u = MapStatusUpdateFactory.zoomTo(zoomLevel);//设置缩放到MapStatusUpdate对象中
      mBaiduMap.animateMapStatus(u);
      //更新地图到显示面板
      MapStatus ms = mBaiduMap.getMapStatus();
      -------------------------------------------------------------------------------------------------
      处理地图旋转
      int rotateAngle = Integer.parseInt(t.getText().toString());//得到角度
      MapStatus ms = new MapStatus.Builder(mBaiduMap.getMapStatus()).rotate(rotateAngle).build();
      MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(ms);
      mBaiduMap.animateMapStatus(u);
      //更新地图到显示面板
      MapStatus ms = mBaiduMap.getMapStatus();
      ---------------------------------------------------------------------------------------------
      处理地图的俯视
      int overlookAngle = Integer.parseInt(t.getText().toString());
      MapStatus ms = new MapStatus.Builder(mBaiduMap.getMapStatus()).overlook(overlookAngle).build();
      MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(ms);
      mBaiduMap.animateMapStatus(u);
      //更新地图到显示面板
      MapStatus ms = mBaiduMap.getMapStatus();
      ---------------------------------------------------------------------------------------------
      处理截图[在SnapshotReadyCallback中保存图片到 sd 卡]
      mBaiduMap.snapshot
      (
      new SnapshotReadyCallback(){
       public void onSnapshotReady(Bitmap snapshot){
        File file = new File("/mnt/sdcard/test.png");
        FileOutputStream out;
        try {
         out = new FileOutputStream(file);
         if (snapshot.compress(Bitmap.CompressFormat.PNG, 100, out)) {
         out.flush();
         out.close();
        }
         Toast.makeText(MapControlDemo.this,"屏幕截图成功,图片存在: " + file.toString(),Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
         e.printStackTrace();
        }
       }
      }
      );
      -------------------------------------------------------------------------------------------------
      单击、长按、双击 获得当前的经纬度

单击
      mBaiduMap.setOnMapClickListener(
      new OnMapClickListener(){
      public void onMapClick(LatLng point){
       经度point.longitude 纬度 point.latitude
      }
      public boolean onMapPoiClick(MapPoi poi){return false;}
      }
      );
      双击:mBaiduMap.setOnMapDoubleClickListener(new OnMapDoubleClickListener());
      长按:mBaiduMap.setOnMapLongClickListener(new OnMapLongClickListener() {});
      -----------------------------------------------------------------------------------------
      UI控制功能[UiSettings]
      UiSettings ui=new UiSettings();
      void setAllGesturesEnabled(boolean enabled)//设置是否允许所有手势操作
      void setCompassEnabled(boolean enabled)//设置是否允许指南针
      void setOverlookingGesturesEnabled(boolean enabled)//设置是否允许俯视手势
      void setRotateGesturesEnabled(boolean enabled)//设置是否允许旋转手势
      void setScrollGesturesEnabled(boolean enabled)//设置是否允许拖拽手势
      void setZoomGesturesEnabled(boolean enabled)//设置是否允许缩放手势
      -------------------------------------------------------------------------------------
      Android百度地图--定位SDK[版本V3.1]
      [相关网址][http://wenku.baidu.com/link?url=DHmlQ-L3dNoKIxVYv2sLL_esD-pKJcQMTZCNKh6NcQEbKKTZKDfR3miw21lLUkpb2VbHUd3yCmUxSYzJ82eZZ8paBW2p3wz676rBKAUkK47]
      1、定位的jar
      2、在配置中声明service组件
       <service
              android:name="com.baidu.location.f"
              android:enabled="true"
              android:process=":remote" >
          </service>
      3、权限
       ........
      4、构建LocationClient 类的对象,设定定位参数,注册实现BDLocationListener接口的类的对象监听器
      [1]、
      LocationClient mLocationClient=new LocationClient(this);
      BDLocationListener mBDLocationListener=new BDLocationListener();
      mLocationClient.registerLocationListener(mBDLocationListener);
      LocationClientOption option = new LocationClientOption();
      // 设置是否返回POI的电话和地址等详细信息。默认值为false,即不返回POI的电话和地址信息。
      option.setAddrType("all");
      // 设置是否返回POI的电话和地址等详细信息。默认值为false,即不返回POI的电话和地址信息。
      option.setPoiExtraInfo(true);
      // 设置产品线名称。强烈建议您使用自定义的产品线名称,方便我们以后为您提供更高效准确的定位服务
      option.setProdName("定位我当前的位置");
      //打开GPS 前提用户硬件打开gps 默认不打开
      option.setOpenGps(false);
      //定位的时间间隔单位(ms)
      option.setScanSpan(1000);
      //查询范围 当前定位中心半径大小
      option.setPoiDistance(500)
      //禁用启用缓存定位数据
      option.disableCache(true);
      坐标系类型,百度手机地图对外接口中的坐标系默认是bd09ll
      option.setCoorType("bd09ll"); 
      设置最多可返回的POI个数,默认值为3。由于POI查询比较耗费流量,设置最多返回的POI个数,以便节省流量
      option.setPoiNumber(3);
      设置定位方式的优先级
      //即使有GPS,而且可用,也仍旧会发起网络请求。这个选项适合对精确坐标不是特别敏感、是希望得到位置描述的用户
      option.setPriority(LocationClientOption.NetWorkFirst);网络优先

mLocClient.setLocOption(option);
      mLocClient.start();//发起定位请求
      mLocationClient.requestLocation();//发起重新定位
      mLocationClient.requestLocation();//发起查询请求

编写BDLocationListener接口的实现类,接收异步返回的定位结果和异步返回的POI查询结果
 int type=location.getLocType();//当前定位采用的类型
 String coorType=location.getCoorType();//坐标系类型
 location.hasRadius是否有定位精度半径
       float accuracy=location.getRadius();定位精度半径 [单位:米]
       if(location.hasAddr){在使用网络定位的情况下获得当前位置的反地理编码String address=location.getAddrStr();}
       String province=location.getProvince();获取省份信息 getCity();获取城市信息getDistrict();获取区县信息
       double latitude=location.getLatitude();//获取纬度信息getLongitude();获取经度信息
       定位结束后停止服务
       mLocationClient.unRegisterLocationListener(mBDLocationListener); 
       mLocationClient.stop();
       mLocationClient=null;

百度地图自定义绘制功能
       绘制文字
        绘制文字坐标 背景  字体大小  字体颜色 角度 等
        坐标:LatLng llText=new LatLng(纬度,经度);
        添加属性OverlayOptions ooText=new TextOptions().bgColor(背景).fontSize(字体大小).fontColor(字体颜色).text(文字).rotate(角度).position(位置);
        mBaiduMap.addOverlay(ooText);//添加到地图上
       绘制多边形
        使用LatLng绘制多边形的坐标 添加到List集合中
        使用OverlayOptions ooPolygon = new PolygonOptions();添加属性
        .points()添加坐标的集合.fillColor(0xAAFFFF00)填充颜色 默认黑色
        .stroke(new Stroke(5, 0xAA00FF00))绘制多边形的线及颜色
        mBaiduMap.addOverlay(ooPolygon);//添加到地图上
       绘制一个点
        使用LatLng绘制点的坐标
        OverlayOptions ooDot = new DotOptions()添加属性
        .center(中心).radius(点的大小).color(背景颜色);
        mBaiduMap.addOverlay(ooDot);
       绘制圆
        OverlayOptions ooCircle = new CircleOptions().fillColor(0x000000FF).center(llCircle).stroke(new Stroke(5, 0xAA000000)).radius(1400);
       绘制弧线
        OverlayOptions ooArc = new ArcOptions().color(0xAA00FF00).width(4).points(p1, p2, p3);
       绘制折线
       OverlayOptions ooPolyline = new PolylineOptions().width(10).color(0xAAFF0000).points(points);

百度地图覆盖物用法[响应点击功能和弹出pop功能]
       1、初始化bitmap信息,用来定义图标、不用时调用recycle();方法回收资源。
        BitmapDescriptor bdA = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka);
       2、清除所有的图标mBaiduMap.clear();
       3、OverlayOptions ooA=new MarkerOptions().position(位置[LatLng]).icon(图标[bdA]).perspective(true|false[是否透视]).anchor(0.5f,0.5f).rotate(角度).zIndex().draggable(true[是否可以拖拽]);
        mMarkerA=(Marker) (mBaiduMap.addOverlay(ooA));
       4、mBaiduMap.setOnMarkerClickListener();点击标记触发事件
       5、自定义Button button=new Button(this); 设置Button的样式button.setBackgroundResource(R.drawable.popup);
 
      百度地图poi搜索功能[可以是一栋房子、商铺、邮筒、公交站等]
      1、继承FragmentActivity 实现OnGetPoiSearchResultListener和OnGetSuggestionResultListener的接口     
      2、定义:
       搜索模块
       PoiSearch poiSearch=PoiSearch.newInstance(); poiSearch.setOnGetPoiSearchResultListener(this);
       SuggestionSearch suggestionSearch=SuggestionSearch.newInstance();suggestionSearch.setOnGetPoiSearchResultListener(this);
      3、得到地图
       使用fragment控件得到要显示图形的界面
       <fragment android:id="@+id/map" 定义图形的长宽 class="com.baidu.mapapi.map.SupportMapFragment"/>
       baiduMap=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getBaiduMap();
      4、在点击的搜索事件中开始查询
       poiSearch.searchInCity((new PoiCitySearchOption()).city("城市").keyword("搜索位置").pageNum(当前页数[从0开始]));     
      5、在onGetPoiResult(PoiResult result)得到返回结果方法中显示
       if(result==null||result.error==SearchResult.ERRORNO.RESULT_NOT_FOUND){返回result为空、或者错误return;}
       if(result.error == SearchResult.ERRORNO.NO_ERROR){//返回没有错误  在地图上显示
        baiduMap.clear();
        PoiOverlay overlay = new MyPoiOverlay(baiduMap);
        baiduMap.setOnMarkerClickListener(overlay);
        overlay.setData(result);
        overlay.addToMap();
        overlay.zoomToSpan();
        return;
       }
       if(result.error == SearchResult.ERRORNO.AMBIGUOUS_KEYWORD){本市没有找到在其他省市找到
        result.getSuggestCityList()方法返回CityInfo吧查到的市找出来
       }
 
       public MyPoiOverlay(BaiduMap baiduMap) {super(baiduMap);}
       @Override
       public boolean onPoiClick(int index) {super.onPoiClick(index);
        PoiInfo poi = getPoiResult().getAllPoi().get(index);
        poiSearch.searchPoiDetail((new PoiDetailSearchOption()).poiUid(poi.uid));return true;
       }
 
      地理编码搜索[地址检索坐标][坐标检索地址]
       实现OnGetGeoCoderResultListener接口和onGetGeoCodeResult[地址返回经纬度]onGetReverseGeoCodeResult[经纬度返回地址]
       1、定义 GeoCoder mSearch = null; // 搜索模块
        BaiduMap mBaiduMap = null 和 MapView mMapView = null;
       //得到控件显示地图
       2、mMapView = (MapView) findViewById(R.id.bmapView);
        mBaiduMap = mMapView.getMap();
      3、初始化搜索模块,注册监听事件
        mSearch = GeoCoder.newInstance();
        mSearch.setOnGetGeoCodeResultListener(this);
       4、发起搜索[坐标搜索地址]
        得到坐标封装成LatLng类型的坐标 LatLng ptCenter = new LatLng(纬度,经度);
        mSearch.reverseGeoCode(new ReverseGeoCodeOption().location(ptCenter));
        if(result==null||result.error!=SearchResult.ERRORNO.NO_ERROR){return;}搜索有误
        else{
        mBaiduMap.clear();
         mBaiduMap.addOverlay(new MarkerOptions().position(result.getLocation()).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_marka)));
         mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(result.getLocation()));
         Toast.makeText(GeoCoderDemo.this, result.getAddress(),1).show();
        }
        发起搜索[地址搜索坐标]
        mSearch.geocode(new GeoCodeOption().city("城市").address("具体位置"));
        if(result==null||result.error!= SearchResult.ERRORNO.NO_ERROR){return;}返回错误
        mBaiduMap.clear();
        mBaiduMap.addOverlay(new MarkerOptions().position(result.getLocation()).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_marka)));
        mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(result.getLocation()));
        String strInfo = String.format("纬度:%f 经度:%f",result.getLocation().latitude, result.getLocation().longitude);
        Toast.makeText(GeoCoderDemo.this, strInfo, Toast.LENGTH_LONG).show();

百度LBS开放平台Android SDK产品使用相关推荐

  1. java ai库_百度AI开放平台 Java SDK

    安装Java SDK Java SDK主要目录结构 com.baidu.aip ├── auth //签名相关类 ├── http //Http通信相关类 ├── client //公用类 ├── e ...

  2. Java调用百度AI开放平台API

    百度AI开放平台 百度AI开放平台是全球领先的人工智能服务平台,面向开发者及企业开放120多项全球领先的AI能力和软硬一体组件,并提供 EasyDL定制化训练平台.对话系统开发平台UNIT.自定义模板 ...

  3. 百度AI开放平台集成人脸识别,离线采集有动作活体版本sdk

    前言 Android项目Android studio环境: 1.工程build.gradle版本号:3.2.1 2.app目录下的build.gradle配置:compileSdkVersion 28 ...

  4. 票据识别android代码,Android 百度AI开放平台-文字识别-财务票据文字识别

    简单记录一下今天关于百度AI开放平台-文字识别-财务票据文字识别的实现过程 文字识别有对应的Android SDK集成及相关Demo,文档地址如下图: SDK目录图.png 但是SDK中的返回数据字段 ...

  5. 后端根据百度地图真实路径距离_百度地图开放平台介绍--路线规划

    百度地图开放平台路线规划服务是结合实时交通,为用户提供覆盖国内外的路线规划服务.路线规划也是我们用户最常用到的功能之一,比如旅行时需要到达另外一个地方,通过百度地图可以快速规划距离最短路线或耗时最短路 ...

  6. 高德LBS开放平台携手SAE 抱团背后开发者受益

    北京时间1月9日消息,国内地图导航服务提供商高德旗下LBS开放平台日前正式宣布与新浪云计算SAE(Sina App Engine,简称SAE)达成战略合作. 合作达成之后,原SAE用户在开发中将能够更 ...

  7. 利用百度AI开放平台的语言处理基础技术(Python)

    百度AI开放平台是一个年轻的平台,2017年1月发布了词法分析,评论观点对抽取,短文本相似度等5种基础技术接口. 本篇文章使用python接入百度AI评论观点对抽取的接口,进行酒店评论文本数据的观点对 ...

  8. 关于使用百度AI开放平台

    百度AI开放平台 地址:https://cloud.baidu.com/?from=console 1.注册登录 2.右侧点击管理控制台,左侧选择自己需要的模块,创建应用 https://consol ...

  9. 百度AI开放平台在线体验及API接口调用(python)

    写在前面 百度AI开放平台将目前已有的深度学习和人工智能的项目成果做了一个集成,并供用户体验和开发者调用. 在线体验 图像技术 色情识别 人像分割 图像无损放大 图像风格转换 文字识别 车牌识别 文字 ...

  10. 百度推出开放平台 或颠覆下载网站等六大行业

    百度推出开放平台 或颠覆下载网站等六大行业 2010年08月27日07:08腾讯科技李乐东 雷建平 吾阅:百度的框计算?谁说技术没有用?要是搞个搜索出来,全国都被你统治: 转自:http://tech ...

最新文章

  1. 用Python解“打印九九乘法表”题
  2. mysql lisensce_Linux之lldptool命令
  3. Trie 树——搜索关键词提示 1
  4. HDU Problem - 5113 Black And White(搜索剪枝)
  5. 如何查找BAPI SD_SALESDOCUMENT_CHANGE里字段对应的数据库存储表
  6. UWP 使用OneDrive云存储2.x api(二)【全网首发】
  7. 智慧交通day02-车流量检测实现02:多目标追踪
  8. html css基础页面,一、必知HTML基础
  9. mysql 空字符串_NULL与MySQL空字符串的区别
  10. 调试比较大小的 才=c语言,计算机等级二级C语言考试练习题(六)
  11. 前端 linux ps,Linux ps命令
  12. SAP BASIS SCC4 事务代码在项目实践中的使用初探
  13. windows会不会被linux取代,深度Linux系统会取代Windows系统吗?
  14. 电子制作:红外遥控器检测仪的制作
  15. 投资信条:你不可不知的投资理念
  16. 提高共射放大电路增益不改变直流偏置的手段
  17. java 发送封包_【Java学习笔记】自动封包和解包(Autoboxing和AutoUnboxing)
  18. [1] DevOps 自动化运维工具Chef----入门
  19. 团队项目开发“编码规范”之九:代码分析
  20. nodejs中cmd命令大全

热门文章

  1. c语言flappy bird编程,C语言实现Flappy Bird小游戏
  2. java.lang.NoSuchMethodError错误
  3. 老徐自述:《软件自动化测试实战解析_基于Python3编程语言》
  4. finereport与finebi差别_FineBI与FineReport对比
  5. 【机器视觉】机器人及视觉检测系统在螺丝检测包装生产线上的应用
  6. 牛客小白月赛24 D.牛妹吃豆子
  7. html div区域划分、居中各种前端技巧笔记
  8. DAO题目:开发一个程序,用于记录车辆购置税
  9. window10设置系统还原点和使用还原点还原系统
  10. 【d3】树图-各种效果集合(附效果图)