您的位置:首页 > 其它

高德地图中根据两点实现旋转图片的方法

2013-11-15 09:19 447 查看
/**
* 设置旋转方向图片
* @param mActivity
* @param image
* @param lat_a
* @param lng_a
* @param lat_b
* @param lng_b
*/
public static  void setDirectionImage(Context mActivity,ImageView image,double lat_a, double lng_a, double lat_b, double lng_b){
Bitmap bitmap=((BitmapDrawable) mActivity.getResources().getDrawable(R.drawable.img_direction_bloginfo)).getBitmap();
Matrix matrix = new Matrix();
Bitmap bp;
RectF rect = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight());
matrix.setRectToRect(rect, rect, Matrix.ScaleToFit.CENTER);
//				matrix.postRotate(angle)
//				matrix.reset();
//设置图像的旋转角度
matrix.setRotate((float) gps2d( lng_a, lat_a,lng_b, lat_b));
//				Log.i("info", "bitmap===="+"bitmap.getWidth():"+bitmap.getWidth()+" ;bitmap.getHeight():"+ bitmap.getHeight()+"matrix:"+gps2d( lng_a, lat_a,lng_b, lat_b));
//旋转图像,并生成新的Bitmap对像
bp=Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
//重新在ImageView组件中显示旋转后的图像
image.setImageBitmap(bp);
}

/**
* 计算方位角pab。
* @param lat_a	A点的纬度
* @param lng_a	A点的经度
* @param lat_b	B点的纬度
* @param lng_b	B点的经度
* @return
*/
public static  double gps2d(double lat_a, double lng_a, double lat_b, double lng_b) {
if(lat_a==lat_b&&lng_a==lng_b){
return 0;
}
double d = 0;
lat_a=lat_a*Math.PI/180;
lng_a=lng_a*Math.PI/180;
lat_b=lat_b*Math.PI/180;
lng_b=lng_b*Math.PI/180;
d=Math.sin(lat_a)*Math.sin(lat_b)+Math.cos(lat_a)*Math.cos(lat_b)*Math.cos(lng_b-lng_a);
d=Math.sqrt(1-d*d);
d=Math.cos(lat_b)*Math.sin(lng_b-lng_a)/d;
d=Math.asin(d)*180/Math.PI;
return Math.abs(d);

}
//将相对于起点的距离转换为经纬度,distance代表到点的距离,angle代表方位角度
public static LatLng ConvertDistanceToLogLat(float distance, LatLng latlngA, double angle)
{
LatLng latlng;

double lon = latlngA.longitude + (distance * Math.sin(angle* Math.PI / 180)) / (111 * Math.cos(latlngA.longitude * Math.PI / 180));//将距离转换成经度的计算公式
double lat = latlngA.latitude + (distance * Math.cos(angle* Math.PI / 180)) / 111;//将距离转换成纬度的计算公式
latlng = new LatLng(lat, lon);
return latlng;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: