Android: MapView рисует круг с динамическим радиусом (в метрах)

Мои известные данные - это мое текущее местоположение (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 , который принимает параметр в метрах и вычисляет прибл. пикселей, если эти метры находятся на экваторе. Я прав? Но я хочу посчитать, сколько пикселей занимает мой радиус, не только если я стою на экваторе. Есть ли какая-либо встроенная функция для такого рода работы или мне нужно делать это вручную?

С уважением

6
задан zmeda 22 May 2011 в 19:56
поделиться