Как вычислить радиус вокруг точки в Android MapView? - PullRequest
12 голосов
/ 16 января 2010

У меня есть MapView , в котором я отображаю «полезный радиус» (думаю, точность координат). Используя MapView ' Проекция ' метровToEquatorPixels , что, по общему признанию, только для экваториального расстояния) не дает мне достаточно точного расстояния (в пикселях). Как бы вы рассчитали это, если бы вы хотели отобразить круг вокруг вашей координаты, учитывая радиус?

Ответы [ 3 ]

28 голосов
/ 18 января 2010

Итак, Google Maps использует проекцию Меркатора . Это означает, что чем дальше от экватора, тем больше искажаются расстояния. Согласно этой дискуссии , правильный способ пересчета расстояний выглядит примерно так:

public static int metersToRadius(float meters, MapView map, double latitude) {
    return (int) (map.getProjection().metersToEquatorPixels(meters) * (1/ Math.cos(Math.toRadians(latitude))));         
}
0 голосов
/ 07 февраля 2017
mMap.addCircle(
    new CircleOptions().center(
        new LatLng(
            bounds.getCenter().latitude, 
            bounds.getCenter().longitude
        )
    )
    .radius(50000)
    .strokeWidth(0f)
    .fillColor(0x550000FF)
);
0 голосов
/ 18 июля 2012
projection.toPixels(GeoP, pt);
float radius = projection.metersToEquatorPixels(50);

Попробуйте и посмотрите ... Я использовал его на MapRadius, и он, кажется, работает

...