Как показать все маркеры в MapView? - PullRequest
0 голосов
/ 24 ноября 2011

Я использую MapView, и на этой карте много markers. Как сделать так, чтобы Zoom автоматически устанавливался на все маркеры на карте?

1 Ответ

5 голосов
/ 24 ноября 2011

Вы должны получить 4 угла, которые образуют границы, содержащие все маркеры. Затем увеличьте масштаб, чтобы включить диапазон, пока вы двигаетесь в центр области. Если это имеет смысл. Смотрите код ниже.

int minLat = Integer.MAX_VALUE;
int maxLat = Integer.MIN_VALUE;
int minLon = Integer.MAX_VALUE;
int maxLon = Integer.MIN_VALUE;

for (GeoPoint item : items) 
{ 

      int lat = item.getLatitudeE6();
      int lon = item.getLongitudeE6();

      maxLat = Math.max(lat, maxLat);
      minLat = Math.min(lat, minLat);
      maxLon = Math.max(lon, maxLon);
      minLon = Math.min(lon, minLon);
 }

double fitFactor = 1.5;
mapController.zoomToSpan((int) (Math.abs(maxLat - minLat) * fitFactor), (int)(Math.abs(maxLon - minLon) * fitFactor));

mapController.animateTo(new GeoPoint( (maxLat + minLat)/2, 
(maxLon + minLon)/2 )); 
...