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;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。