高德地图中根据两点实现旋转图片的方法
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; }
相关文章推荐
- C#实现任意角度旋转图片(方法1)
- PHP实现根据图片色界在不同位置加水印的方法
- android 图片旋转实现的两种方法的比较
- JS实现图片平面旋转的方法
- android实现图片缩放 旋转的几种方法
- C#实现任意角度旋转图片(方法1)
- jquery实现根据浏览器窗口大小自动缩放图片的方法
- C#实现任意角度旋转图片(方法2)
- js根据鼠标移动速度背景图片自动旋转的方法
- Android开发实现图片平移、缩放、倒影及旋转功能的方法
- JS实现图片平面旋转的方法
- js实现图片旋转的三种方法
- Android实现旋转,放大,缩小图片的方法
- php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
- Android开发之图片旋转功能实现方法【基于Matrix】
- jquery实现根据浏览器窗口大小自动缩放图片的方法
- php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
- js实现图片旋转的三种方法
- C#实现任意角度旋转图片(方法1)
- C#实现任意角度旋转图片(方法2)