我正在使用mapview来显示几个用户的位置。我使用此处列出的方法之一来适当地设置地图缩放级别以显示所有引脚。
但我遇到的问题是,当引脚遍布全球时,缩放级别最大化,我在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只显示网格。但你可以看到白色空间。一旦我们放大,这就会改变。我是否需要检查缩放逻辑。我认为最大缩小仍将填满可用空间。
我认为它与缩放有关。来自谷歌文档。
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 :(得分:1)
解决!请在创建地图后添加以下代码行。它的工作原理是在初始化后自动将地图缩放3倍,如果您愿意,可以使用其他因素。
mapView.setBuiltInZoomControls(true);
int level = mapView.getZoomLevel();
MapController mc = mapView.getController();
mc.setZoom(level + 3);
答案 1 :(得分:0)
在地图视图之前使用线性布局。