Работа с GoogleMaps

Здравствуйте, в этой статье я рассмотрю настройки карт от 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;
}

Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *