Google Map API v2 - 设置padding时不考虑moveCamera

时间:2015-04-17 01:45:51

标签: android google-maps

信息窗口是从地图中绘制出来的,因此我决定在地图中添加填充。当我点击标记但是使用moveCamera功能无法达到相同效果时,相机根据填充位置很好。似乎moveCamera函数没有考虑填充或我做错了吗?请指教。谢谢。

mGoogleMap.setPadding(0,140,0,0);

Marker marker = mGoogleMap.addMarker(new MarkerOptions()
            .position(latLng)
            .icon(BitmapDescriptorFactory.fromResource(R.drawable.pointer))
            .title("Crime happened here!")
            .snippet("(" + roundFourDecimals(latLng.latitude) + "," + roundFourDecimals(latLng.longitude) + ")"));
    marker.showInfoWindow();

    mGoogleMap.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder().target(latLng).zoom(17).build()));

1 个答案:

答案 0 :(得分:0)

我通过将相机移动到您想要的LatLng来改变代码,然后使用VisibleRegion和LatLngBounds来获得可见区域的中心。像魅力一样工作。

请务必在onMapLoadedCallback中执行此操作以防止nullpointerexception,因为它需要地图片段的高度和宽度

  mGoogleMap.setPadding(0,140,0,0);

  Marker marker = mGoogleMap.addMarker(new MarkerOptions()
            .position(latLng)
            .icon(BitmapDescriptorFactory.fromResource(getCrimeIcon(crimeType)))
            .title("Crime happened here!")
            .snippet("(" + roundFourDecimals(latLng.latitude) + "," + roundFourDecimals(latLng.longitude) + ")"));
    marker.showInfoWindow();

    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,17));

    VisibleRegion visibleRegion = mGoogleMap.getProjection().getVisibleRegion();
    LatLngBounds mapLatLngBound = visibleRegion.latLngBounds;

    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(mapLatLngBound.getCenter()));