2012-02-17 3 views
1

Я использую mapview, чтобы показать позиции нескольких пользователей. Я использую один из методов, перечисленных здесь, чтобы установить уровень масштабирования карты соответствующим образом, чтобы показать все контакты.MapView не принимает полный экран

Но проблема заключается в том, что когда штыри находятся по всему миру, уровни масштабирования максимизируются, и я получаю это белое пространство сверху и снизу карты.

Есть ли способ исправить это, я просто хочу, чтобы сетка карт заполнила эту область вместо цвета. Вот картинка и XML

enter image description here

<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=""/> 

Ключ апи не для сертификата 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); 

ответ

0

Используйте линейную компоновку перед видом карты.

+0

Мой вид карты находится в линейном режиме с атрибутами как заполняющий родитель. Я просто не включил это в xml. – blessenm

1

Решено! после создания карты добавьте строки кода ниже. Он работает путем автоматического масштабирования карты в 3 раза после инициализации, если вы хотите использовать другие факторы.

mapView.setBuiltInZoomControls(true); 
int level = mapView.getZoomLevel(); 
MapController mc = mapView.getController(); 
mc.setZoom(level + 3); 

 Смежные вопросы

  • Нет связанных вопросов^_^