在CameraUpdateFactory.newLatLngBounds周围添加额外的填充

时间:2016-12-02 03:07:01

标签: java android google-maps

我需要在我显示的地图上的标记周围添加额外的填充。

到目前为止,这是代码,但顶部和底部或西部和东部标记位于屏幕的边缘。

 @Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;


    mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
        @Override
        public void onMapLoaded() {
            LatLngBounds.Builder builder = new LatLngBounds.Builder();
            for (int i = 0; i < arrayList.size(); i++) {
                options.position(latlngs.get(i));
                options.title(arrayList.get(i).getArea().toString());
                options.snippet(arrayList.get(i).getRegion().toString());
                mMap.addMarker(options);
                builder.include(latlngs.get(i));
            }
            LatLngBounds bounds = builder.build();
            int padding = 0;
            CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, padding);

            mMap.moveCamera(cameraUpdate);            }
    });

}

这是我得到的: What I get currently

这就是我想要的: What I need 那么如何添加一些填充以便我可以看到所有标记但是没有标记与地图边缘对接?感谢您的任何意见。

4 个答案:

答案 0 :(得分:4)

设置paddind值&gt; 0
示例:
int padding = 50;

答案 1 :(得分:3)

您的代码中已经有填充值。

只需将int padding = 0;的值增加到更高的值(例如int padding = 100;

答案 2 :(得分:1)

我还建议通过@Zumry Mohamed从线程Android map v2 zoom to show all the markers中找到解决方案,这对我来说最有效:

log4j.xml

答案 3 :(得分:0)

这是用于将填充设置为地图。在下面的方法中,您可以制作地图以将相机聚焦在latlngbounds上,并从侧面为您提供填充。

CameraUpdateFactory.newLatLngBounds(LatLngBounds bounds, int padding)

可用于在特定方向上指定填充的第二种方法:

GoogleMap.setPadding(     10,      20,      20,     50);

此处的参数位于pixel(Int),左,上,右,下。 我以以下方式使用了上述两种方法。

fun moveCameraToPolyLine(polyline: Polyline, googleMap: GoogleMap?) {
    val builder = moveCameraToPolyline(polyline)
    builder.let {builder->
        googleMap?.let {googleMap ->
            googleMap.animateCamera(CameraUpdateFactory.newLatLngBounds(builder!!.build(), 300))
setDirectionalPaddingToGoogleMap(300,300,300,600)
        }
    }
}

//left,top,right,bottom in pixels
fun setDirectionalPaddingToGoogleMap(googleMap: GoogleMap?,left :Int,top : Int, right : Int, bottom : Int){
    googleMap?.setPadding(left,top,right,bottom)
}