Java 在CameraUpdateFactory.newLatLngBounds周围添加额外的填充
我需要在我显示的地图上的标记周围添加额外的填充 这是目前为止的代码,但顶部和底部或西部和东部标记位于屏幕边缘Java 在CameraUpdateFactory.newLatLngBounds周围添加额外的填充,java,android,google-maps,Java,Android,Google Maps,我需要在我显示的地图上的标记周围添加额外的填充 这是目前为止的代码,但顶部和底部或西部和东部标记位于屏幕边缘 @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() { @Override public void onMapL
@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); }
});
}
@覆盖
4月1日公开作废(谷歌地图谷歌地图){
mMap=谷歌地图;
setOnMapLoadedCallback(新的GoogleMap.OnMapLoadedCallback(){
@凌驾
加载时的公共无效(){
LatLngBounds.Builder=新的LatLngBounds.Builder();
对于(int i=0;i
以下是我得到的:
这就是我想要的:
那么,我如何添加一些填充,以便我可以看到所有的标记,但不让标记与地图的边缘对接?感谢您的输入。您的代码中已经有了填充值
只需增加
int padding=0的值代码>设置为更高的值(例如int padding=100;
)设置填充值>0
示例:
int padding=50代码>我还建议通过以下线程提出解决方案:,这对我最有效:
width = getResources().getDisplayMetrics().widthPixels;
height = getResources().getDisplayMetrics().heightPixels;
padding = (int) (width * 0.20); // offset from edges of the map - 20% of screen
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds,, width, height, padding);
这用于设置贴图的填充。在下面的方法中,您可以制作贴图,将相机聚焦在latlngbounds上,并且您提供的填充将从all for side开始
CameraUpdateFactory.newLatLngBounds(LatLngBounds bounds, int padding)
第二种方法可用于指定特定方向上的填充:
GoogleMap.setPadding( 10, 20, 20, 50);
这里的参数以像素(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)
}
50似乎很好用,我想我试了5次,但它不起作用,并且假设填充影响了地图的其他方面。很高兴能解决这个问题。非常感谢,非常感谢,因为我升级到kotlin,它现在坏了,我回去工作后需要修复它。