Работаю с картами, как изначально проставить 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) {
}
});
}
}
На самом деле можете просто в Ваш метод onChildAdded()
засунуть:
map.moveCamera(CameraUpdateFactory.newLatLngZoom(location, 13));
И в зависимости от желаемого зума играться со вторым аргументом.
Ну дополнительно как вариант можете попробовать такой способ:
map.animateCamera(CameraUpdateFactory.zoomTo(14), 2000, null);
Можно выставить зум опираясь на Ваши маркеры:
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);//зум без анимации
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Всем приветЯ новичок в андроиде, поэтому много чего еще не понимаю
Как читать посимвольно из textarea сразу после введение символов в textarea в java? те
ЗдравствуйтеЯ пришёл из мира Java, и в процессе вынужденного переноса работающего кода (построение дерева из списка его предков) на python столкнулся...