在Android谷歌地图上打印多个标记

时间:2016-04-25 03:29:44

标签: android google-maps

所以我得到了这段代码,试图添加保存在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正在运行,但是只有第一行似乎“正在工作”,因为它没有将它放在正确的位置。

我已经尝试了另一次这个确切的代码,但我想我现在错过了一些东西。

1 个答案:

答案 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));
}

这会将所有标记带入视口。

如果这是你想要的,请告诉它是否对你有用并接受它。