我正在设计一款应该在地图上显示多个标记的Android应用。我可以轻松地做到这一点。我的问题是我需要在我的位置周围显示所有标记,而CameraPosition需要集中在我的位置。我可以轻松地分别对它们进行操作,但我需要的是将它们展示在一起,我在地图中间的位置以及我所在位置周围的标记。 任何想法我怎么能实现这一目标?提前谢谢!
答案 0 :(得分:2)
将缩放设置为更高级别,以便缩小并查看当前位置周围的更多地图。
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(yourLatLng).zoom(12).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
答案 1 :(得分:2)
您需要的功能是将所有选定的标记保留在地图上,并且它应该一次可见。你必须将所有这些点保持在可见区域,并且myLlocation(你当前的位置)始终位于屏幕的中心。
首先将myLocation保存在latlng变量中,将所有其他latlng保留在LatLng的另一个ArrayList内的边界内。还要定义一些变量来跟踪操作。
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;
然后将相机设置为 myLocation ,它将放置在地图的中心。 在这里放置一个低缩放级别。
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(myLocation)
.zoom(14)
.build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
现在检查它们位于谷歌地图视图端口的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中的每个latlng,直到所有latlng都在视口内。
希望这个答案可以帮到你。