12

我有一个MapView,我在其中显示“有用的半径”(考虑坐标的准确性)。使用ProjectionMapView的metresToEquatorPixels ,诚然仅用于赤道距离)并没有给我足够准确的距离(以像素为单位) )。如果您想在给定半径的坐标周围显示一个圆圈,您将如何计算?

4

3 回答 3

29

因此,谷歌地图使用墨卡托投影。这意味着您离赤道越远,距离就越扭曲。根据这个讨论,转换距离的正确方法是:

public static int metersToRadius(float meters, MapView map, double latitude) {
    return (int) (map.getProjection().metersToEquatorPixels(meters) * (1/ Math.cos(Math.toRadians(latitude))));         
}
于 2010-01-17T23:51:57.557 回答
0
mMap.addCircle(
    new CircleOptions().center(
        new LatLng(
            bounds.getCenter().latitude, 
            bounds.getCenter().longitude
        )
    )
    .radius(50000)
    .strokeWidth(0f)
    .fillColor(0x550000FF)
);
于 2017-02-07T11:02:18.533 回答
-2
projection.toPixels(GeoP, pt);
float radius = projection.metersToEquatorPixels(50);

试试这个,看看......我在我的 MapRadius 上使用它,它似乎正在工作

于 2012-07-18T09:12:50.773 回答