项目的需求中,有一个设置围栏的功能。
高德地图的设置围栏,有2种类型,圆形和多边形。
多边形已经实现地图自动缩放。但是绘制圆形有问题,不能自动缩放,用户看到的圆形可能很小,或者很大。
我要讲解的是绘制圆形的自动缩放。
高德地图中的demo是不能自适应屏幕的,如上图所示。
我的思路是根据圆心的经纬度,和半径,计算出圆的上下左右的点的经纬度,然后调用多边形的缩放的接口方法。
说说代码的实现吧:
代码:
/**
* 假设地球为一半径为R的表面光滑圆球体,
表面上同一经线圈上相差1"两点间的距离为 2πR/360/3600
表面上同一纬线圈上相差1"两点间的距离为 2πR×cos(纬度)/360/3600
当R取半径平均值6371km时,
地球表面上同一经线圈上相差1"两点间的距离约为30.887m
地球表面上同一纬线圈上相差1"两点间的距离约为30.887m×cos(纬度)
* @param boundsBuilder
* @param center
* @param radius
*/
private void calculateLl(LatLngBounds.Builder boundsBuilder,LatLng center,Double radiu