我的已知数据是我的当前位置(GeoPoint)和半径(以米为单位)。我想根据地图投影和半径在我的当前位置周围绘制圆圈。 我的地图视图叠加层覆盖了draw方法,如下:
@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
方法上,它以米为参数计算赤道上的近似像素。我的目的是计算半径所占用的像素数,而不仅限于在赤道上的情况。是否有针对这种工作的内置函数或者我必须手动计算呢?敬礼!