Как вычислить радиус вокруг точки в Android MapView?
-
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, и, похоже, он работает