Как вычислить радиус вокруг точки в Android MapView?

StackOverflow https://stackoverflow.com/questions/2077054

  •  21-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

public static int metersToRadius(float meters, MapView map, double latitude) {
    return (int) (map.getProjection().metersToEquatorPixels(meters) * (1/ Math.cos(Math.toRadians(latitude))));         
}

Другие советы

mMap.addCircle(
    new CircleOptions().center(
        new LatLng(
            bounds.getCenter().latitude, 
            bounds.getCenter().longitude
        )
    )
    .radius(50000)
    .strokeWidth(0f)
    .fillColor(0x550000FF)
);
projection.toPixels(GeoP, pt);
float radius = projection.metersToEquatorPixels(50);

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top