Я использую mapview, чтобы показать позиции пары пользователей. Я использую один из методов, перечисленных здесь, чтобы установить уровень масштабирования карты соответствующим образом, чтобы показать все контакты.
Но проблема, с которой я столкнулся, заключается в том, что, когда контакты расположены по всему миру, уровни масштабирования максимально увеличены, и я получаю это белое пространство сверху и снизу карты.
Есть ли способ это исправить, я просто хочу, чтобы сетка карт заполняла эту область вместо цвета. Вот картинка и xml
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:background="#061a2f"
android:clickable="true" android:apiKey=""/>
Ключ API не для сертификата debig, поэтому в mapview отображается только сетка. Но вы можете увидеть белое пространство. Это изменится, как только мы увеличим масштаб. Нужно ли мне проверять логику увеличения. Я думал, что максимальное уменьшение все еще заполнит доступное пространство.
Я думаю, это как-то связано с масштабированием. Из документов Google.
zoomToSpan
Попытки настроить масштаб карты так, чтобы
диапазон широты и долготы будет отображаться. Потому что зум может
только достичь дискретных уровней, а потому соотношение сторон карты
может не соответствовать указанному соотношению, качество посадки может отличаться.
единственное, что мы гарантируем, это то, что после увеличения по крайней мере один из
новая широта или новая долгота будет в пределах 2 от
соответствующий параметр.
Я думаю, что соотношение сторон является проблемой. Есть ли более надежный способ сделать это. Вот мой код Java.
for(Visitor visitor:mVisitors){
LiveMapOverlay overlay = new LiveMapOverlay(new
PinDrawable(mContext,color),mMapView);
GeoPoint point = new GeoPoint(
(int)(Double.valueOf(visitor.visitorInfo.latitude) * 1E6)
,(int)(Double.valueOf(visitor.visitorInfo.longitude) * 1E6));
minLatitude = minLatitude < point.getLatitudeE6() ? minLatitude :
point.getLatitudeE6();
maxLatitude = maxLatitude > point.getLatitudeE6() ? maxLatitude :
point.getLatitudeE6();
minLongitude = minLongitude< point.getLongitudeE6()? minLongitude:
point.getLongitudeE6();
maxLongitude = maxLongitude> point.getLongitudeE6()? maxLongitude:
point.getLongitudeE6();
}
mMapView.getController().setCenter(new GeoPoint((maxLatitude + minLatitude)/2 ,
(minLongitude + maxLongitude)/2));
mMapView.getController().zoomToSpan(maxLatitude - minLatitude, maxLongitude -
minLongitude);