Моя база данных имеет различные точки интереса. Я хочу, чтобы пользователь видел их на основе их местоположения. Также есть 3 кнопки, которые показывают точку интереса в радиусах 2 км/5 км/15 км. Я не могу реализовать масштабирование функциональности для этих радиусов. Поэтому я ищу отношения между коэффициентом масштабирования (от 2 до 21) и физическим расстоянием (в км).Как уменьшить/уменьшить масштаб карты Google до радиуса x km
Я столкнулся с этим фрагментом кода по другому вопросу в SO.
private int calculateZoomLevel(int screenWidth) {
double equatorLength = 40075004; // in meters
double widthInPixels = screenWidth;
double metersPerPixel = equatorLength/256;
int zoomLevel = 1;
while ((metersPerPixel * widthInPixels) > 2000) {
metersPerPixel /= 2;
++zoomLevel;
}
Log.i("ADNAN", "zoom level = "+zoomLevel);
return zoomLevel;
}
Однако это использовалось для карт google v1, и я боюсь, что с тех пор все изменилось. Я могу сделать map.moveCamera(CameraUpdateFactory.newLatLngZoom(myLocation, 15f));
, чтобы увеличить масштаб до моего местоположения с коэффициентом масштабирования 15, но теперь я не знаю радиус карты.
Благодаря
@ user28008624 То, что я имел в виду под радиусом, является конечной точкой карты из моего местоположения. Если радиус равен 5 км, то из средней точки (myLocation) вправо наибольшая точка на карте должна быть в 5 км. –
. Вы можете, конечно, сделать еще несколько расчетов и узнать длину средней горизонтали, интерполируя midLeft и midRight с Видимые граничные точки. Но при общем растяжении на 15 км даже в наклоненном виде разница будет очень малой. – user2808624