调整地图以使2点可见

时间:2014-03-17 08:33:15

标签: android google-maps

我有2个LatLng,通常相隔几公里,我想缩放地图,以便两个点都可见。我的下面的代码有时会工作,有时不会(地图缩放到3级)。我认为原因是循环太快,地图无法及时进行必要的调整。 有没有办法在再次进行测试之前等待地图更新?要注意该进程在UI线程上运行

double x1=from.latitude;
double x2= to.latitude;
double x1half=(x1+x2)/2;
x1=from.longitude;
x2= to.longitude;
double x2half=(x1+x2)/2;
LatLng pp=new LatLng(x1half, x2half);
map.moveCamera(CameraUpdateFactory.newLatLng(pp));//3.0
//now zoom map so that both points are in

double zoom=21;//V3.3
while(zoom>2){//
    map.animateCamera( CameraUpdateFactory.zoomTo( (float) zoom ) ); 
    if(isCurrentLocationVisible(from,map)&&isCurrentLocationVisible(to,map)) return;
    /now we know map is still not visible.   give it a bit more room
    zoom--;
}

2 个答案:

答案 0 :(得分:1)

您可以使用以下的LatLngBounds:

LatLngBounds.Builder builder = new LatLngBounds.Builder();
        builder.include(locationOne);
        builder.include(locationTwo);
        LatLngBounds bounds = builder.build();
        int padding = 0; // offset from edges of the map in pixels
        CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds,screen width, screen height, padding);
        map.moveCamera(cu);

答案 1 :(得分:1)

我建议您使用newLatLngBounds()而不是..您可以使用LatLngBounds.builder()从两个地理位置创建界限。

到你问题的第二部分。你可以做一些像map.post(new Runnable..)这样可以解决并发问题的想法。