2016-04-25 6 views
0

Так что я получил этот код пытаюсь добавить маркера, сохраненные в базе данных:Печать несколько маркеров на Android Google Maps

@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))); 
} 

Всех строки DB становятся правильно полученными и Cicle работает, однако только первый ряд кажется, «работает», потому что он не помещает его в нужное место.

Ive пробовал этот точный код в другой раз, но я думаю, что им что-то не хватает.

+1

Вы добавляете несколько маркеров, а затем перемещаете камеру в другое место. Если вы получаете ошибку, тогда опубликуйте свой логарифм здесь –

+0

@AnujSharma У меня нет ошибок, и я просто перемещаю камеру в «avarage», чтобы я мог видеть все остальные. –

+0

Каково ваше требование и что вы получаете в своих результатах? –

ответ

1

Первое, что вам следует позаботиться, это то, что у вас есть все данные, необходимые в вашей переменной sucursales. Делая это, вы можете быть уверены, что поместите все маркеры на карту.

Здесь вы предполагаете, что все маркеры находятся в окне просмотра, которое может быть неверным во всех случаях, поэтому вы должны ограничить границы.

Благодаря этому вы будете уверены, что сохраните все маркеры в окне просмотра.

LatLngBounds bounds = new LatLngBounds.Builder().include(source).include(destination).build(); 
googleMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100)); 

В вашем случае задайте этот цикл before 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)); 
} 

Это приведет к появлению всех ваших маркеров в окне просмотра.

Скажите, если это сработало для вас и принять это, если это то, что вы хотели.

+0

все это сработало для вас? –

Смежные вопросы