Android: MapView рисует круг с динамическим радиусом (в метрах) - PullRequest
6 голосов
/ 22 мая 2011

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

Привет

1 Ответ

6 голосов
/ 07 июня 2011

Таким образом, у этого есть ответ

Я думаю, что он покрыт этим вопросом

Как вычислить радиус вокруг точки в Android MapView?

...