Мои известные данные - это мое текущее местоположение (GeoPoint) и радиус в метрах. Я хочу нарисовать круг вокруг моего текущего местоположения на основе проекции карты и радиуса. Мое наложение вида карты переопределяет метод рисования, такой как
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
Projection projection = mapView.getProjection();
GeoPoint myLocationGeoPoint = getLocationGeoPointFromSomeSource();
Point myPoint = new Point();
projection.toPixels(myLocationGeoPoint, myPoint);
int radiusPixel = (int) projection.metersToEquatorPixels(getRadiusInMetersFromSomeSource());
canvas.drawCircle(myPoint.x, myPoint.y, radiusPixel, mPaintStroke);
canvas.drawCircle(myPoint.x, myPoint.y, radiusPixel, mPaintFill);
super.draw(canvas, mapView, shadow);
}
. Проблема этого кода в том, что radiusPixel
слишком мало. Я предполагаю, что проблема в методе meterToEquatorPixels
, который принимает параметр в метрах и вычисляет прибл. пикселей, если эти метры находятся на экваторе. Я прав?
Но я хочу посчитать, сколько пикселей занимает мой радиус, не только если я стою на экваторе. Есть ли какая-либо встроенная функция для такого рода работы или мне нужно делать это вручную?
С уважением