百度api中实现 内嵌圆

在使用百度API时,遇到了实现内嵌圆的问题,由于不会用openGL所以只好使用PolygonOptions来实现,我们来看看效果吧:


PolygonOptions是百度提供的多边形绘制类。我们可以把镂空圆分解成两个多边形,即一个半圆弧加上圆弧两端到地图边境的直线再加上地图一半的边界线。

好吧,我也说不清,看代码吧:

private void initSmoke(int acc,Double r,LatLng postion) {

        List<LatLng> pts = new ArrayList<LatLng>();
        Double latitude = postion.latitude;
        Double longitude = postion.longitude;
        Double lat = 0.0;
        Double lon = 0.0;

        for(int i=0;i<acc/2+1;i++){
            lat = latitude + r*Math.sin((2*Math.PI)/acc*i);
            lon = longitude + r*Math.cos((2*Math.PI)/acc*i);
            LatLng pt = new LatLng(lat,lon );
            pts.add(pt);
        }
        LatLng pt1 = new LatLng(lat,180);
        pts.add(pt1);
        LatLng pt2 = new LatLng(90,180);
        pts.add(pt2);
        LatLng pt3 = new LatLng(90,-180);
        pts.add(pt3);
        LatLng pt4 = new LatLng(latitude + r*Math.sin((2*Math.PI)/acc*0),-180);
        pts.add(pt4);
        for(int i=acc/2;i<acc+1;i++){
            lat = latitude + r*Math.sin((2*Math.PI)/acc*i);
            lon = longitude + r*Math.cos((2*Math.PI)/acc*i);
            LatLng pt = new LatLng(lat,lon );
            pts.add(pt);
        }
        pt1 = new LatLng(lat,180);
        pts.add(pt1);
        pt2 = new LatLng(-90,180);
        pts.add(pt2);
        pt3 = new LatLng(-90,-180);
        pts.add(pt3);
        pt4 = new LatLng(latitude + r*Math.sin((2*Math.PI)/acc*(acc/2)),-180);
        pts.add(pt4);
        //构建用户绘制多边形的Option对象
        OverlayOptions polygonOption = new PolygonOptions()
                .points(pts)
                .stroke(new Stroke(4, 0))
                .fillColor(0x99999900);
//在地图上添加多边形Option,用于显示
        mBaiduMap.addOverlay(polygonOption);


    }
变量介绍:acc是圆弧精度,acc越高这个内嵌圆就越像圆,r是圆的半径,postion是原点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值