Android 将CameraPosition设置为“我的位置”,但也显示其他标记
我正在设计一个Android应用程序,它应该在地图上显示多个标记。我很容易做到。我的问题是,我需要显示我位置周围的所有标记,并且相机位置需要在我的位置聚焦。我可以轻松地把它们分开,但是我需要把它们放在一起,我在地图中间的位置,和我周围的标记。Android 将CameraPosition设置为“我的位置”,但也显示其他标记,android,google-maps,Android,Google Maps,我正在设计一个Android应用程序,它应该在地图上显示多个标记。我很容易做到。我的问题是,我需要显示我位置周围的所有标记,并且相机位置需要在我的位置聚焦。我可以轻松地把它们分开,但是我需要把它们放在一起,我在地图中间的位置,和我周围的标记。 你知道我怎样才能做到吗?提前谢谢 将缩放设置为更高的级别,以便它可以缩小并查看当前位置周围的更多地图 CameraPosition cameraPosition = new CameraPosition.Builder()
你知道我怎样才能做到吗?提前谢谢 将缩放设置为更高的级别,以便它可以缩小并查看当前位置周围的更多地图
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。如果他们在里面,那没关系。如果没有,则降低贴图的缩放级别并再次设置摄影机动画
这将继续检查ArrayList中的每个板条,直到所有板条都在视口中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)); }
- 首先,将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。如果他们在里面,那没关系。如果没有,则降低贴图的缩放级别并再次设置摄影机动画
这将继续检查ArrayList中的每个板条,直到所有板条都在视口中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)); }
希望这个答案对你有帮助。当设置摄像时不要放大你的地图,当你设置地图时,不要放大你的地图,这是我需要的,我现在的位置在中间,其他的标记在它周围。这就是我需要的,我现在的位置在中间,和周围的其他标记。我想这就是我要使用的方法。我想也许有一种方法可以把目标设为LatLngBounds。谢谢你的回答,你可以接受我的回答,或者至少在有帮助的情况下投赞成票。谢谢我想这就是我要用的方法。我想也许有一种方法可以把目标设为LatLngBounds。谢谢你的回答,你可以接受我的回答,或者至少在有帮助的情况下投赞成票。谢谢