Android (MapView): как установить уровень масштабирования 4 мили в обзоре карты? - PullRequest
7 голосов
/ 08 апреля 2011

У меня есть широта и долгота (GeoPoint), которая является центром карты. Я хочу установить уровень масштабирования в 4 мили от имеющейся у меня широты и долготы.

Заранее спасибо,

Ответы [ 3 ]

14 голосов
/ 21 июля 2011

решено:

от Androd API Google: zoomlevel устанавливает масштаб увеличения карты.Значение будет ограничено от 1 до 21 включительно, хотя не во всех областях есть плитки с более высоким уровнем масштабирования.Это просто устанавливает уровень масштабирования напрямую;Параметры: zoomLevel - При zoomLevel 1, экватор Земли имеет длину 256 пикселей.Каждый последующий уровень масштабирования увеличивается с коэффициентом 2. Возвращает: новый уровень масштабирования, от 1 до 21 включительно.

Таким образом, с учетом экватора E = 40075 км или 21,638,8 миль с учетом расстояния до масштабирования D= 20 км или миль

уровень масштабирования: L = log2 (E / D) + 1

Это простой метод, который я использовал, не забудьте установить E = 21,638,8, если выхочу использовать мили ...

public static byte zoomLevel (double distance){
    byte zoom=1;
    double E = 40075;
    Log.i("Astrology", "result: "+ (Math.log(E/distance)/Math.log(2)+1));
    zoom = (byte) Math.round(Math.log(E/distance)/Math.log(2)+1);
    // to avoid exeptions
    if (zoom>21) zoom=21;
    if (zoom<1) zoom =1;

    return zoom;
}
3 голосов
/ 08 апреля 2011

Вы можете использовать функцию setzoom () для этого.Код ниже можно найти в этом примере .

mc = mapView.getController();
String coordinates[] = {"1.352566007", "103.78921587"};
double lat = Double.parseDouble(coordinates[0]);
double lng = Double.parseDouble(coordinates[1]);

p = new GeoPoint(
    (int) (lat * 1E6), 
    (int) (lng * 1E6));

mc.animateTo(p);
mc.setZoom(17); 
0 голосов
/ 08 апреля 2011

Играйте с параметром .setZoom(int); вашей карты.я думаю, что около 15:

так myMap.setZoom(15);

...