я последовал примеру здесь: How to set screen zoom by geopoints?OSM MAPview: Показать все geopoints из GeoTracking на экране
Но моя проблема в том, что мой маршрут очень мал в MapView. Он должен заканчиваться вблизи границ.
Вот как это выглядит на код ниже:
private void centerMap(ArrayList<GeoPoint> waypoints) {
GeoPoint[] geoPoints = new GeoPoint[waypoints.size()];
for(int i = 0; i<waypoints.size(); i++) {
geoPoints[i] = waypoints.get(i);
}
int minLat = Integer.MAX_VALUE;
int maxLat = Integer.MIN_VALUE;
int minLon = Integer.MAX_VALUE;
int maxLon = Integer.MIN_VALUE;
//for (Point point : twoPoints) {
for(GeoPoint point: geoPoints){
int lat = (int) (point.getLatitude() * 1E6);
int lon = (int) (point.getLongitude() * 1E6);
maxLat = Math.max(lat, maxLat);
minLat = Math.min(lat, minLat);
maxLon = Math.max(lon, maxLon);
minLon = Math.min(lon, minLon);
}
mapView.getController().zoomToSpan(Math.abs(maxLat - minLat), Math.abs(maxLon - minLon));
mapView.getController().setCenter(new GeoPoint((maxLat + minLat)/2, (maxLon + minLon)/2));
}
Остерегайтесь того, что '(maxLat + minLat)/2' может переполняться. Вместо этого используйте 'maxLat - (maxLat - minLat)/2'. То же самое относится к долготе. – scai