我的已知数据是我的当前位置(地质点)和半径(米)。我想在地图投影和半径的基础上围绕我当前的位置画一个圆。
我的地图视图覆盖确实覆盖了
@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
方法中,该方法采用米为单位的参数,如果米在赤道上,则计算大约像素。我说得对吗?但我想计算我的半径需要多少像素,而不仅仅是我站在赤道上。这类工作有内置功能吗?还是我必须手工操作?
当做
最佳答案
所以这有一个答案
我想这个问题已经包括在内了
How to compute a radius around a point in an Android MapView?