2012-02-17 21 views
1

マップビューを使用して複数のユーザーの位置を表示しています。私はマップのズームレベルを適切に設定してすべてのピンを表示するために、ここにリストされているメソッドを使用しています。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=""/> 

があるAPIキーはなぜMapViewのが唯一のグリッドが表示されていることをdebig証明書のためではありません。しかし、あなたは空白を見ることができます。ズームインするとこれが変わります。ズームロジックを確認する必要がありますか?私は最大ズームアウトがまだ利用可能なスペースを埋めると思った。

ズームとは関係があると思います。 google docsから。

zoomToSpan

緯度と経度の所定の スパンが表示されるように、地図のズームを調整することを試みます。ズームは が離散レベルにしか達しないため、マップ のアスペクト比が指定された比率と一致しない可能性があるため、フィットの品質は異なる場合があります。 私たちが保証することは、ズーム後、 新しい緯度または新しい経度の少なくとも1つが、対応するパラメータ から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);