[英]MapView not taking full screen
我正在使用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);
解决! 请在创建地图后在下面添加代码行。 初始化后,它会通过自动将地图缩放3倍来工作,您可以根据需要使用其他因子。
mapView.setBuiltInZoomControls(true);
int level = mapView.getZoomLevel();
MapController mc = mapView.getController();
mc.setZoom(level + 3);
在地图视图之前使用线性布局。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.