Здравствуйте, в этой статье я рассмотрю настройки карт от Google.
Инструкция для начала работы с GoogleMaps — Урок 139. Google maps. Создание и настройка проекта. Карта, камера, события
Доступ к настройкам карты:
UiSettings mapSettings = map.getUiSettings();
Включаем возможность перемещения по карте:
mapSettings.setScrollGesturesEnabled(true);
Включаем возможность поворота камеры двумя пальцами:
mapSettings.setRotateGesturesEnabled(true);
Включаем кнопки для увеличения карты:
mapSettings.setZoomControlsEnabled(true);
Открываем карту определенного города:
try { Geocoder geocoder = new Geocoder(MainActivity.this); List<Address> addresses; addresses = geocoder.getFromLocationName("Москва", 3); if(addresses.size()> 0) { double latitude= addresses.get(0).getLatitude(); double longitude= addresses.get(0).getLongitude(); LatLngBounds MOSCOW = new LatLngBounds(new LatLng(latitude, longitude), new LatLng(latitude, longitude)); map.moveCamera(CameraUpdateFactory.newLatLngZoom(MOSCOW.getCenter(), 10)); } } catch (IOException e) {}
В методе getFromLocationName указываем название города на русском или английском и масштаб. В моем примере карта увеличится в 3 раза.
Включаем отображение местоположения пользователя на карте:
map.setMyLocationEnabled(true);
Устанавливаем тип карты:
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
Список типов карт:
MAP_TYPE_NONE – карта не будет отображаться.
MAP_TYPE_NORMAL – обычный режим, в нем карта стартует по умолчанию.
MAP_TYPE_SATELLITE – снимки со спутника.
MAP_TYPE_TERRAIN – карта рельефа местности.
MAP_TYPE_HYBRID – снимки со спутника и информация о улицах и транспорте.
Узнать какой тип карты включен в данный момент можно с помощью метода getMapType().
Добавляем маркер при нажатии на карту:
@Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); … map.setOnMapClickListener(onMapClick); } OnMapClickListener onMapClick = new OnMapClickListener() { @Override public void onMapClick(LatLng latLng) { addMarker(latLng); } }; void addMarker(LatLng latLng){ MarkerOptions markerOptions = new MarkerOptions(); markerOptions.position(latLng); markerOptions.flat(false); markerOptions.title("Мой заголовок для маркера"); map.clear(); map.animateCamera(CameraUpdateFactory.newLatLng(latLng)); map.addMarker(markerOptions); }
Устанавливаем адрес в качестве заголовка для маркера:
markerOptions.title("Мой заголовок для маркера"); String getAdress(LatLng latLng){ String filterAddress = ""; Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault()); try { List<Address> addresses = geoCoder.getFromLocation( latLng.latitude, latLng.longitude, 1); if (addresses.size()> 0) { for (int index = 0; index < addresses.get(0).getMaxAddressLineIndex(); index++){ filterAddress += addresses.get(0).getAddressLine(index) + " "; } } }catch (IOException ex) { ex.printStackTrace(); }catch (Exception e2) { e2.printStackTrace(); } return filterAddress; }