Android地图自动缩放
嗨,我对在地图上显示点有点小问题。 我使用Arraylist存储多个lat/lng值,然后执行for循环以添加点和自动缩放。当有2个或更多标记时,一切正常。问题是,当只添加一个标记时,它会放大得太近 有人知道如何解决这个问题吗Android地图自动缩放,android,Android,嗨,我对在地图上显示点有点小问题。 我使用Arraylist存储多个lat/lng值,然后执行for循环以添加点和自动缩放。当有2个或更多标记时,一切正常。问题是,当只添加一个标记时,它会放大得太近 有人知道如何解决这个问题吗 public static void processMap() { for (int i = 0; i < lat.size(); i++) { MarkerOptions markerOptions = new MarkerOpt
public static void processMap()
{
for (int i = 0; i < lat.size(); i++)
{
MarkerOptions markerOptions = new MarkerOptions();
LatLng latLng = new LatLng(lat.get(i), lng.get(i));
markerOptions.position(latLng);
markerOptions.title("title");
markerOptions.snippet("description");
mMap.addMarker(markerOptions);
bounds.include(new LatLng(lat.get(i), lng.get(i)));
}
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds.build(), 150));
}
publicstaticvoidprocessmap()
{
对于(int i=0;i
更新代码
public static void processMap()
{
int num = 0;
double lat2 = 0;
double lng2 = 0;
for (int l = 0; l < lat.size(); l++)
{
lat2 = lat.get(l);
lng2 = lng.get(l);
LatLng latLng = new LatLng(lat2, lng2);
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title(title.get(l));
markerOptions.snippet(description.get(l));
mMap.addMarker(markerOptions);
bounds.include(new LatLng(lat2, lng2));
num++;
}
if (num == 1)
{
// if only 1 marker
LatLng latLng2 = new LatLng(lat2, lng2);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng2, 16));
}
else
{
// more than 1 marker
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds.build(), 150));
}
}
publicstaticvoidprocessmap()
{
int num=0;
双lat2=0;
双lng2=0;
对于(int l=0;l
嗨,很抱歉,我之前没有回复,我正在尝试解决问题。我设法修复了它,但这是正确的方法吗?您的代码并不能真正说明为什么要使用
.newLatLngBounds()
,但这将使贴图集中在给定的边界框上,并考虑框周围给定的150px填充
然后根据边界框内的元素调整缩放以显示所有元素。当框内只有一个标记时,它将缩放到该标记(可能太近)。文件上说地图将以“”为中心
因此,为了防止出现这种情况,我会为第一个标记选择一个良好的缩放级别,添加它,用
moveCamera(…)
移动相机,然后在剩下其他标记时继续使用代码。您所做的编辑应该可以解决您的问题。无论如何,如果你只有一个标记,你不需要设置新的板条。通过边界就可以了。我会做一个小小的编辑:
if (num == 1)
{
// if only 1 marker
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(bounds.build(), 16));
}
else
{
// more than 1 marker
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds.build(), 150));
}
希望能有帮助。祝你好运 CameraUpdateFactory类型中的newLatLngZoom(LatLng,float)方法不适用于参数(LatLngBounds,int),这是我在将其更改为您的编辑时遇到的错误。我忘记更改
newLatLngZoom
的newLatLngBounds
。更改该值,然后根据您的喜好为边界设置一个值。(明显高于150)。