Я разрабатываю приложение для Android, у меня есть две GeoPoints на карте Google. Один GeoPoint является исправлением, а другой GeoPoint - мое текущее местоположение.На моем текущем местоположении я размещаю точку стрелки в направлении фиксированной GeoPoint, так как мое текущее местоположение меняется, и стрелка меняет свое направление. Это работает нормально, но в большинстве случаев показывает неправильное направление.
Вот мойкод.
Paint paint = new Paint();
GeoPoint gp1;
GeoPoint gp2;
Point point1,point2;
Projection projection = mapView.getProjection();
projection.toPixels(gp1, point1);
projection.toPixels(gp2, point2);
Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.arrow);
double dlon = gp2.getLongitudeE6() - gp1.getLongitudeE6();
double dlat = gp2.getLatitudeE6() - gp1.getLatitudeE6();
double a = (Math.sin(dlat / 2) * Math.sin(dlat / 2)) + Math.cos(gp1.getLatitudeE6()) * Math.cos(gp2.getLatitudeE6()) * (Math.sin(dlon / 2) * Math.sin(dlon / 2));
double angle = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
Matrix matrix = new Matrix();
matrix.postTranslate(-25, -25);
matrix.postRotate(convertToRadians(angle));
matrix.postTranslate(point1.x, point1.y);
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
canvas.drawBitmap(bmp, matrix, paint);
Жду вашей помощи и заранее спасибо.
Альтаф