Android实现百度地图两点画弧线
本文实例为大家分享了Android实现百度地图两点画弧线的具体代码,供大家参考,具体内容如下
importandroid.support.annotation.NonNull; importcom.baidu.mapapi.map.ArcOptions; importcom.baidu.mapapi.map.OverlayOptions; importcom.baidu.mapapi.model.LatLng; /** * *http://lbsyun.baidu.com/index.php?title=androidsdk/guide/render-map/ploygon *通过两点来绘制弧线 *@authorpeter2018-12-2415:09 */ publicclassArcOverlay{ privateLatLngstart; privateLatLngend; /** *{@linkcom.baidu.mapapi.map.ArcOptions#color(int)} */ privateintcolor;//弧线的颜色 privateintarcWidth=4;//弧线宽度 publicArcOverlay(@NonNullLatLngstart,@NonNullLatLngend,intcolor){ this.start=start; this.end=end; this.color=color; } /** *获取一个弧线Overlay *@paramstart起点 *@paramend终点 *@paramcolor颜色 *@paramarcWidth弧线宽度 */ publicArcOverlay(@NonNullLatLngstart,@NonNullLatLngend,intcolor,intarcWidth){ this.start=start; this.end=end; this.color=color; this.arcWidth=arcWidth; } publicOverlayOptionstoBmapOverlayOptions(){ returnnewArcOptions() .color(color) .width(arcWidth) .points(start,getMidPoint(),end); } /** *参考前端百度提供的画弧线js文件中计算第三个点的方式 *http://lbsyun.baidu.com/jsdemo.htm#c1_13 *view-source:http://api.map.baidu.com/library/CurveLine/1.5/src/CurveLine.min.js *@return中间点的经纬度 */ privateLatLnggetMidPoint(){ doublet,t2,h,h2; doublelng1=start.longitude; doublelng2=end.longitude; doublelat1=start.latitude; doublelat2=end.latitude; if(lng2>lng1){ if((lng2-lng1)>180){ if(lng1<0){ lng1=(180+180+lng1); } } } if(lng1>lng2){ if((lng1-lng2)>180){ if(lng2<0){ lng2=(180+180+lng2); } } } if(lat2==lat1){ t=0; h=lng1-lng2; }else{ if(lng2==lng1){ t=Math.PI/2; h=lat1-lat2; }else{ t=Math.atan((lat2-lat1)/(lng2-lng1)); h=(lat2-lat1)/Math.sin(t); } } t2=(t+(Math.PI/5)); h2=h/2; doublelng3=h2*Math.cos(t2)+lng1; doublelat3=h2*Math.sin(t2)+lat1; returnnewLatLng(lat3,lng3); } publicLatLnggetStart(){ returnstart; } publicvoidsetStart(LatLngstart){ this.start=start; } publicLatLnggetEnd(){ returnend; } publicvoidsetEnd(LatLngend){ this.end=end; } publicintgetColor(){ returncolor; } publicvoidsetColor(intcolor){ this.color=color; } publicintgetArcWidth(){ returnarcWidth; } publicvoidsetArcWidth(intarcWidth){ this.arcWidth=arcWidth; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。