我的已知数据是我的当前位置 (GeoPoint) 和以米为单位的半径。我想根据 map 投影和半径在当前位置周围画圈。 我的 map View 叠加层确实覆盖了绘图方法,例如
@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
方法中,该方法采用以米为单位的参数并计算大约。如果该米在赤道上,则为像素。我对吗?
但是我想计算我的半径需要多少像素,而不仅仅是站在赤道上。这种工作是否有任何内置功能,还是我必须手动完成?
问候
最佳答案
关于Android: MapView 绘制具有动态半径的圆(以米为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6090379/