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