Android 将CameraPosition设置为“我的位置”,但也显示其他标记

Android 将CameraPosition设置为“我的位置”,但也显示其他标记,android,google-maps,Android,Google Maps,我正在设计一个Android应用程序,它应该在地图上显示多个标记。我很容易做到。我的问题是,我需要显示我位置周围的所有标记,并且相机位置需要在我的位置聚焦。我可以轻松地把它们分开,但是我需要把它们放在一起,我在地图中间的位置,和我周围的标记。 你知道我怎样才能做到吗?提前谢谢 将缩放设置为更高的级别,以便它可以缩小并查看当前位置周围的更多地图 CameraPosition cameraPosition = new CameraPosition.Builder()

我正在设计一个Android应用程序,它应该在地图上显示多个标记。我很容易做到。我的问题是,我需要显示我位置周围的所有标记,并且相机位置需要在我的位置聚焦。我可以轻松地把它们分开,但是我需要把它们放在一起,我在地图中间的位置,和我周围的标记。
你知道我怎样才能做到吗?提前谢谢

将缩放设置为更高的级别,以便它可以缩小并查看当前位置周围的更多地图

CameraPosition cameraPosition = new CameraPosition.Builder()
                                .target(yourLatLng).zoom(12).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

将缩放设置为更高的级别,以便它可以缩小并查看当前位置周围的更多地图

CameraPosition cameraPosition = new CameraPosition.Builder()
                                .target(yourLatLng).zoom(12).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
您需要的功能是在地图上保留所有选定的标记,并且它应该在同一时间可见。您必须始终保持可见区域中的所有这些点,并使MyLocation(您当前的位置)位于屏幕的中心

  • 首先,将myLocation保存在一个latlng变量内,并将所有其他latlng保存在另一个latlng数组列表的边界内。还要定义一些变量来跟踪操作

    LatLng myLocation=null;
    ArrayList<LatLng> latlngs = null; // the arraylist of other latlng;
    boolean are_all_inside_viewport = false;
    float current_zoom = googleMap.getCameraPosition().zoom;
    //initialise these variables myLocation and latlngs;
    
  • 现在,在谷歌地图查看端口的ArrayList中检查每个latlng。如果他们在里面,那没关系。如果没有,则降低贴图的缩放级别并再次设置摄影机动画

    while (!are_all_inside_viewport) {
            are_all_inside_viewport = true;
            for (LatLng latLng : latlngs) {
                if (!bounds.contains(latLng)) {
                    are_all_inside_viewport = false;
                    break;
                }
            }
    
            bounds = googleMap_local.getProjection().getVisibleRegion().latLngBounds;
    
            cameraPosition = new CameraPosition.Builder()
                    .target(myLocation)
                    .zoom(current_zoom - 1)
                    .build();
            googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
        }
    
    这将继续检查ArrayList中的每个板条,直到所有板条都在视口中

希望这个答案对您有所帮助。

您需要的功能是将所有选定的标记保留在地图上,并且在同一时间应该是可见的。您必须始终保持可见区域中的所有这些点,并使MyLocation(您当前的位置)位于屏幕的中心

  • 首先,将myLocation保存在一个latlng变量内,并将所有其他latlng保存在另一个latlng数组列表的边界内。还要定义一些变量来跟踪操作

    LatLng myLocation=null;
    ArrayList<LatLng> latlngs = null; // the arraylist of other latlng;
    boolean are_all_inside_viewport = false;
    float current_zoom = googleMap.getCameraPosition().zoom;
    //initialise these variables myLocation and latlngs;
    
  • 现在,在谷歌地图查看端口的ArrayList中检查每个latlng。如果他们在里面,那没关系。如果没有,则降低贴图的缩放级别并再次设置摄影机动画

    while (!are_all_inside_viewport) {
            are_all_inside_viewport = true;
            for (LatLng latLng : latlngs) {
                if (!bounds.contains(latLng)) {
                    are_all_inside_viewport = false;
                    break;
                }
            }
    
            bounds = googleMap_local.getProjection().getVisibleRegion().latLngBounds;
    
            cameraPosition = new CameraPosition.Builder()
                    .target(myLocation)
                    .zoom(current_zoom - 1)
                    .build();
            googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
        }
    
    这将继续检查ArrayList中的每个板条,直到所有板条都在视口中


希望这个答案对你有帮助。

当设置摄像时不要放大你的地图,当你设置地图时,不要放大你的地图,这是我需要的,我现在的位置在中间,其他的标记在它周围。这就是我需要的,我现在的位置在中间,和周围的其他标记。我想这就是我要使用的方法。我想也许有一种方法可以把目标设为LatLngBounds。谢谢你的回答,你可以接受我的回答,或者至少在有帮助的情况下投赞成票。谢谢我想这就是我要用的方法。我想也许有一种方法可以把目标设为LatLngBounds。谢谢你的回答,你可以接受我的回答,或者至少在有帮助的情况下投赞成票。谢谢