Android studio Проект по работе с картой. Геолокация.

Автор: | 24.02.2017
package com.example.admin.myapplication;

import android.Manifest;

import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;

public class MainActivity extends AppCompatActivity {

    GoogleMap googleMap;//объект гугл карты
    MapView mMapView;//объект для отображения карты

    static double TARGET_LATITUDE = 49.8240877;//координаты на карте
    static double TARGET_LONGITUDE = 72.8887742;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mMapView = (MapView) findViewById(R.id.mapView);//получаем карту
        mMapView.onCreate(savedInstanceState);//создаем карут

        mMapView.onResume(); // необходимо для отображения карты

        try {
            MapsInitializer.initialize(this.getApplicationContext());//инициализируем карту
        } catch (Exception e) {
            e.printStackTrace();
        }

        mMapView.getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(GoogleMap mMap) {//получаем карту в асинхронном режиме
                googleMap = mMap;

                // показать кнопку перемещения в моую локацию
                int status = getPackageManager().checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION,//проверка есть ли у приложения доступ к геоданным
                        getPackageName());
                if (status != PackageManager.PERMISSION_GRANTED)return ;//если нет доступа к геоданным то мы возвращаем null что означает локацию определить невозможно
                googleMap.setMyLocationEnabled(true);

                // отображаем маркер на карте по умолчанию это Сидней
                LatLng sydney = new LatLng(TARGET_LATITUDE,   TARGET_LONGITUDE);


                // для автоматического масштабирования карты и управления камерой
                CameraPosition cameraPosition = new CameraPosition.Builder().target(sydney).zoom(12).build();
                googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
            }
        });

    }
}

 

Манифест

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.admin.myapplication">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="AIzaSyB9W_3A70USW6tb4Rlhfq0BaNSho30Zse8"/>

    </application>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>


</manifest>

Дизайн

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.admin.myapplication.MainActivity">



    <com.google.android.gms.maps.MapView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/mapView" />
</RelativeLayout>