当前位置: 首页 > 知识库问答 >
问题:

将多个标记添加到谷歌地图并缩放以包含所有标记

昌琪
2023-03-14

我使用以下代码向google地图添加标记并创建边界
我想做的是添加标记并以一种在具有固定高度的地图中都可见的方式进行缩放

LatLngBounds.Builder builder = new LatLngBounds.Builder();  
for(Location loc: locations) {  
  MarkerOptions marker = new MarkerOptions().position(loc.lat, loc.lon);  
  googleMap.addMarker(marker);  
  builder.include(marker.getPosition());  
}    

LatLngBounds bounds = builder.build();  
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, 5);  
googleMap.animateCamera(cameraUpdate);  

所有图标是否会出现取决于我为填充添加的值。
如果我增加值,所有图标都会显示出来。否则其他的是隐藏的。
考虑到我的googleMap有固定的设置宽度,我如何为填充提供正确的值?

共有2个答案

巫马欣嘉
2023-03-14

首先,您的代码是正确的,它可能取决于您关于如何在地图上显示标记的具体细节。如果您查看此示例代码,开发人员为填充提供了不同的值。

/*initialize the padding for map boundary/
int padding = 50;
/*create the bounds from latlngBuilder to set into map camera/
LatLngBounds bounds = builder.build();
/*create the camera with bounds and padding to set into map/
cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
/*call the map call back to know map is loaded or not/
map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
/*set animated zoom camera into map/
map.animateCamera(cu);

}
});
}

以下是一些使用newLatLngBounds提供解决方案和自己的实现的链接:

  • 在Android中适合GoogleMap的所有标记
  • android Zoom-to-Fit Google Map v2上的所有标记
  • Android map v2缩放显示所有标记

希望有帮助!

萧凡
2023-03-14

尝试设置您想要启动地图的位置的中心(使用任何标记的纬度和经度设置coor)并设置缩放级别:

LatLng center = centro = new LatLng(lat, long);

CameraPosition cameraPosition = new CameraPosition.Builder().target(center).zoom(17).bearing(0).tilt(0).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
 类似资料:
  • 我想将事件侦听器添加到所有标记中,我正在使用GoogleMapsforRailsGem。这是我的密码 我试图将事件侦听器添加到所有标记中,但它没有发出任何警报。如何在google maps for rails中添加事件侦听器 我有一个数据数组,每个数据包含id,lat,lng

  • 所以我正在准备一个页面,其中有一个谷歌地图,有两个形式,即纬度和经度,和一个提交按钮。

  • 我有5个标记显示在地图上,其中4个非常接近彼此和第五个是一点点距离这4个。现在,当我显示地图,我希望所有这5个标记显示在地图上,并与最高可能的缩放。我不在乎它们是在屏幕的边框上还是在屏幕的中央。我的意思是标记可以分散在屏幕上,但我想要的是所有的标记都应该对用户可见,并且尽可能高的缩放。 但我不知道为什么缩放很少。但是温我看了android文档,我认为这个功能是在做正义的事情,它说它会做什么就做什么

  • 我有一个函数,以一个地名作为输入,并在谷歌地图上那个地方的lat和lng位置下降一个pin。它还使用lat和lng位置设置边界,将pin设置为Viewport。一切都很好,但旧的标记没有得到清除,而添加一个新的标记。我已经清除了标记数组,但它不起作用。这是我的代码

  • 我知道周围也有类似的问题,但我无法找到一个可靠的答案,这是我的问题:有没有什么方法可以在没有谷歌地图引用的情况下将标记存储在ArrayList(或任何其他存储)中,然后简单地将它们添加到我的地图中? 背景:我有一个应用程序,目前有大约3500个标记。每个标记还有一个与之相关联的数据(布尔数组存储每个标记的数据,用于根据用户交互使它们可见/不可见)。目前,我使用扩展AsyncTask的类来获取这些标

  • 我在中有10个标记。我想尽可能地放大,让所有的标记都在视野中?在早期版本中,这可以通过实现,但在v2中,我不知道该如何实现。进一步,我知道需要可见的圆的半径。