Проставить изначальный zoom

279
12 мая 2017, 15:23

Работаю с картами, как изначально проставить zoom(примерно так, чтоб было видно только тот город, в котором расположены эти маркеры)?

Класс моего MapActivity:

public class MapActivity extends AppCompatActivity implements OnMapReadyCallback {
private ChildEventListener mChildEventListener;
private DatabaseReference mFruitRef = FirebaseDatabase.getInstance().getReference("Fruit");
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);
    createMapView();
}
private void createMapView() {
    MapFragment mapFragment = (MapFragment) getFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
    googleMap.setOnMarkerClickListener(marker -> false);
    googleMap.getUiSettings().setZoomControlsEnabled(true);
    Marker marker = new Marker("Orange", 47.000327, 28.867950, "some info");
    Marker marker2 = new Marker("Bananas", 47.045029, 28.861427, "some info");
    Marker marker3 = new Marker("Peaches", 47.024204, 28.889236, "some info");
    mFruitRef.push().setValue(marker);
    mFruitRef.push().setValue(marker2);
    mFruitRef.push().setValue(marker3);
    googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
    //get marker info from Firebase Database and add to map
    addMarkersToMap(googleMap);
    if (ActivityCompat.checkSelfPermission(this,
            android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
            && ActivityCompat.checkSelfPermission(this,
            android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        return;
    }
    googleMap.setMyLocationEnabled(true);
}
@Override
public void onStop() {
    if (mChildEventListener != null)
        mFruitRef.removeEventListener(mChildEventListener);
    super.onStop();
}
private void addMarkersToMap(GoogleMap map) {
    mChildEventListener = mFruitRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            Marker marker = dataSnapshot.getValue(Marker.class);
            String name = marker.getName();
            String description = marker.getDescription();
            double latitude = marker.getLatitude();
            double longitude = marker.getLongitude();
            LatLng location = new LatLng(latitude, longitude);
            map.addMarker(new MarkerOptions().title(name).snippet(description).position(location));
        }
        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {
        }
        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {
        }
        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });
}
}
Answer 1

На самом деле можете просто в Ваш метод onChildAdded() засунуть:

map.moveCamera(CameraUpdateFactory.newLatLngZoom(location, 13));

И в зависимости от желаемого зума играться со вторым аргументом.

Ну дополнительно как вариант можете попробовать такой способ:

  map.animateCamera(CameraUpdateFactory.zoomTo(14), 2000, null);
Answer 2

Можно выставить зум опираясь на Ваши маркеры:

LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (Marker marker : markerList)
    builder.include(marker.getPosition());
LatLngBounds bounds = builder.build();
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 30);
googleMap.animateCamera(cu);//зум с анимацией
//googleMap.moveCamera(cu);//зум без анимации
READ ALSO
Взаимодействие между *.java-классами

Взаимодействие между *.java-классами

Всем приветЯ новичок в андроиде, поэтому много чего еще не понимаю

248
Как читать посимвольно из textarea в java

Как читать посимвольно из textarea в java

Как читать посимвольно из textarea сразу после введение символов в textarea в java? те

427
404 description The requested resource is not available

404 description The requested resource is not available

ПриветствуюПодскажите такой вопрос

415
Проблемы с переносом кода с java на python: глобальную переменную считает локальной

Проблемы с переносом кода с java на python: глобальную переменную считает локальной

ЗдравствуйтеЯ пришёл из мира Java, и в процессе вынужденного переноса работающего кода (построение дерева из списка его предков) на python столкнулся...

292