Статьи

Расположение Android с помощью Google Maps — часть 4

В первой части мы разработали упрощенную диаграмму классов UML, которая поможет нам в процессе разработки. Затем мы реализовали LocatorOverlay  и Locator в части 2 и части 3 соответственно.

 

 

 В последней части этой серии мы рассмотрим пользовательский интерфейс LocatorActivity и начнем с включения фрагмента MapView в наш XML-макет с помощью  ключа API Карт Google, который мы упоминали в части 1:

<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:enabled="true"
android:apiKey="insert-your-map-key-here" />

Теперь нам нужно Activity, которая отображает MapView. Google Maps предоставляет
MapActivity с методами жизненного цикла, которые заботятся о потоках картографического сервиса и рендеринге для нас:

// package statement and other imports here ...
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;

/**
 * A Google map activity with zoom controls
 * displaying the handset's location point
 * with the default provider (i.e. network) accuracy.
**/
public class LocatorActivity extends MapActivity {

	private Locator locator;	

	/** A View from the Google Maps service.*/
	private MapView mapView;

// Lifecycle methods ...............

 /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        MapView mapView = (MapView) findViewById(R.id.mapview);
       //  enable the built-in zoom controls
     	mapView.setBuiltInZoomControls(true);

       // start location services
       locator = new Locator(this, mapView, null);
    }

     /** Register for the updates when Activity is in foreground */
     @Override
     protected void onResume() {
         super.onResume();	
         locator.requestUpdates();
     }

     /** Stop the updates when Activity is paused 
      *  since tracking location is costly on the device's battery and CPU.  
      * */
      @Override
      protected void onPause() {
         super.onPause();
         locator.removeUpdates();
     }

// MapActivity accounting info ...............

    /** 
     *   Whether or not we are displaying any kind of route information,
     *   such as a set of driving directions.
     * */
     @Override
     protected boolean isRouteDisplayed() {
         return false;
     }

    @Override
    protected boolean isLocationDisplayed() {
    	return true;
    }
}

 

В последнем разделе выше есть два метода в MapActivity, которые Google Maps использует для целей бухгалтерского учета, и которые нам необходимо реализовать для соответствия условиям использования:

  1. isLocationDisplayed ()
  2. isRouteDisplayed ()

Поэтому нам нужно сообщить Google Maps, реализуем ли мы какие-либо из них.

И последнее, но не менее важное: нам нужно объявить об использовании библиотеки карт и запросить соответствующие разрешения в нашем файле манифеста Android
:

...
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
...
<application...>
  ...
  <uses-library android:name="com.google.android.maps" />
</application>

 

И … мы закончили. Пришло время увидеть результаты наших усилий. Вот изображение с уровнем детализации масштаба 16, установленным по умолчанию ранее в нашем классе Locator , откуда мы можем увеличивать и уменьшать масштаб, касаясь экрана, поскольку ранее мы включили встроенные элементы управления масштабированием в коде:

 

 

И наша главная особенность, то есть возможность отправлять наше местоположение с помощью SMS на наши контакты, нажав на точку нашего местоположения на карте:

 

 

Как только мы решим отправить местоположение, наша программа SMS (или список, если у нас установлено несколько) появится с текстом нашего местоположения, здесь URL-адрес местоположения. Второй снимок экрана — это визуализация нашего местоположения получателями SMS, когда они открывают ссылку в своем браузере:

 

Теперь мы внедрили базовое приложение для Android с помощью Google Maps, которое сообщает о нашем местоположении с помощью SMS.

 

Из блога Тони .