欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android 百度地图自定义圆,更改默认图标等常用方法

程序员文章站 2022-10-16 16:48:27
总结了一下百度地图常用的方法(前提是集成百度地图环境成功): 1:定位到已经经纬度,只需要改变latlng的参数即可。有两种方法: 方法1: //定义maker坐标点 latlng poi...

总结了一下百度地图常用的方法(前提是集成百度地图环境成功):
1:定位到已经经纬度,只需要改变latlng的参数即可。有两种方法:

方法1:

//定义maker坐标点
  latlng point = new latlng(39.963175, 116.400244);
//构建marker图标
  bitmapdescriptor bitmap = bitmapdescriptorfactory
 .fromresource(r.mipmap.ic_launcher);
//构建markeroption,用于在地图上添加marker
  overlayoptions option = new markeroptions()
 .position(point)
 .icon(bitmap);
//在地图上添加marker,并显示
  baidumap.getmap().addoverlay(option);

方法2:

mylocationdata locdata = new mylocationdata.builder()
  // 此处设置开发者获取到的方向信息,顺时针0-360
  .direction(100).latitude(result.getlocation().latitude)
  .longitude(result.getlocation().longitude).build();
// 设置定位数据
baidumap.setmylocationdata(locdata);

2:根据关键词key检索附近建筑(默认返回10条数据)

//经纬度搜索
poisearch.searchnearby(new poinearbysearchoption().keyword("生").radius(5000).location(new latlng(39.963175, 116.400244)));
//城市搜索
 poisearch.searchincity(new poicitysearchoption().city("杭州").keyword("东方通信科技园").pagecapacity(1));
 poisearch.setongetpoisearchresultlistener(this);
 @override
 public void ongetpoiresult(poiresult poiresult) {
  if (poiresult == null || poiresult.error == searchresult.errorno.result_not_found) {
return;
  }
  if (poiresult.error == searchresult.errorno.no_error) {
//附近搜索
baidumap.getmap().clear();
//创建poioverlay
poioverlay overlay = new mypoioverlay(baidumap.getmap());
//设置overlay可以处理标注点击事件
baidumap.getmap().setonmarkerclicklistener(overlay);
//设置poioverlay数据
overlay.setdata(poiresult);
//添加poioverlay到地图中
overlay.addtomap();
overlay.zoomtospan();

return;
  }


 }

3:地图放大设置zoom:

  /**
* 设置地图放大的倍数
*/
  mbaidumap.setmapstatus(mapstatusupdatefactory.newmapstatus(new mapstatus.builder().zoom(18).build()));

4:
更改默认图标有两种方法:

  • 方法1
      /**
    * 更改定位默认图标mylocationconfiguration 第二个参数是是否显示方向信息
    */
      mylocationconfiguration.locationmode mcurrentmode = mylocationconfiguration.locationmode.normal;
      bitmapdescriptor mcurrentmarker = bitmapdescriptorfactory
     .fromresource(r.drawable.icon_map_gcoding);
      mbaidumap.setmylocationconfiguration(new mylocationconfiguration(mcurrentmode, false, mcurrentmarker));
  • 方法2:
      //定义maker坐标点
    //构建marker图标
    bitmapdescriptor bitmap = bitmapdescriptorfactory
      .fromresource(r.drawable.icon_map_gcoding);
    //构建markeroption,用于在地图上添加marker
    overlayoptions options = new markeroptions()
      .position(ll)
      .icon(bitmap);
    //在地图上添加marker,并显示
    mbaidumap.addoverlay(options);

    5:将定位到的地方移到地图*

    /**
     * 将定位到的地方移到地图*
     */
    latlng ll = new latlng(location.getlatitude(), location.getlongitude());
    mapstatusupdate msu = mapstatusupdatefactory.newlatlng(ll);
    mbaidumap.animatemapstatus(msu);

    6:在地图*的地方画圆:

    // 添加圆
    overlayoptions oocircle = new circleoptions().fillcolor(0x2201a4f1)
      .center(ll).stroke(new stroke(5, 0xaa01a4f1))
      .radius(200);
    mbaidumap.addoverlay(oocircle);

    7:当地图放大时,不让默认的圆出现(不设置accuracy即可),

    // 构造定位数据 accuracy设置精确度
    mylocationdata locdata = new mylocationdata.builder()
      // 此处设置开发者获取到的方向信息,顺时针0-360
      .direction(100).latitude(location.getlatitude())
      .longitude(location.getlongitude()).build();
    // 设置定位数据
    mbaidumap.setmylocationdata(locdata);