В первой части мы разработали упрощенную диаграмму классов 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 использует для целей бухгалтерского учета, и которые нам необходимо реализовать для соответствия условиям использования:
- isLocationDisplayed ()
- 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.
Из блога Тони .






