所以我得到了这段代码,试图添加保存在DataBase中的标记:
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney and move the camera
control.conectar();
ArrayList<Sucursal> sucursales = control.getSucursales();
control.cerrar();
LatLng loc;
for(int x=0;x<sucursales.size();x++){
loc = new LatLng(sucursales.get(x).getX(), sucursales.get(x).getY());
mMap.addMarker(new MarkerOptions().position(loc).title(sucursales.get(x).getNombre()));
}
mMap.moveCamera(CameraUpdateFactory.zoomTo(12));
mMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(20.67711737527203, -103.36349487304688)));
}
所有数据库行都正确获取并且cicle正在运行,但是只有第一行似乎“正在工作”,因为它没有将它放在正确的位置。
我已经尝试了另一次这个确切的代码,但我想我现在错过了一些东西。
答案 0 :(得分:1)
您应该注意的第一件事是您拥有sucursales
变量中所需的所有数据。通过这样做,您可以确定将所有标记放在地图上。
这里假设所有标记都在视口中,在所有情况下可能都不是真的,所以你应该在这里拉出边界。
通过这个,您将确保在视口中保留所有标记。
LatLngBounds bounds = new LatLngBounds.Builder().include(source).include(destination).build();
googleMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100));
在你的情况下,在for循环之前定义它,并在每次迭代中更新。
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney and move the camera
control.conectar();
ArrayList<Sucursal> sucursales = control.getSucursales();
control.cerrar();
LatLng loc;
LatLngBounds bounds=new LatLngBounds.Builder().build();
for(int x=0;x<sucursales.size();x++){
bounds.including(new LatLng(sucursales.get(x).getX(), sucursales.get(x).getY()));
}
for(int x=0;x<sucursales.size();x++){
loc = new LatLng(sucursales.get(x).getX(), sucursales.get(x).getY());
mMap.addMarker(new MarkerOptions().position(loc).title(sucursales.get(x).getNombre()));
}
mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100));
}
这会将所有标记带入视口。
如果这是你想要的,请告诉它是否对你有用并接受它。