html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Работа с картами в Google Android

Сегодня я хочу вам рассказать как правильно работать с картами в Android, это может показаться непростым занятием, но на деле это в принципе довольно просто, тут в уроке я рассмотрю от создания простого приложения в котором будет только карта и закончу приложением в котором мы будем выводить графические элементы на карте и находить текущее местоположение. Начнем мы конечно же с простого и создадим приложение в котором мы будем выводить на экран карту, но для этого нам нужно сгенерировать ключ что бы наша карта могла выводиться на экране телефона, чем мы сейчас и займемся.



1. Создание ключа и подготовка работы с картой

Для начала создаем проект в Eclipse — File — New Android Project. Дальше переходим на сайте гуглаdevelopers.google.com/android/maps-api-signup?hl=ru на котором видим формочку ввода md5 ключа, его мы сгенерируем у себя на компьютере с помощью командной строки. Запускаем CMD, «Пуск — Выполнить — cmd» в адресной строке пишем вот такую красоту

c:\<<b>path-to-jdk-dir</b>>\bin\keytool.exe -list -alias androiddebugkey -keystore "C:\users\<user-name>\.android\debug.keystore" -storepass android -keypass android


где path-to-jdk-dir — это путь к вашему jdk, у меня оно находится по адресу C:\Program Files\Java\jdk1.7.0_07.
user-name — имя вашего пользователя компьютера.

далее вбиваем туда же в консоль

keytool.exe -list -alias androiddebugkey -keystore "C:\users\ravi\.android\debug.keystore" -storepass android -keypass android


C:\users\ravi\.android\debug.keystore — может быть другой, у меня например вот такой: C:\Users\Admin\.android\debug.keystore

Должно выглядеть все это так:

Далее вставляем на сайте который я вам дал адрес наш md5 код и получаем ключ для открытия карты в андроиде:

После нажатия на кнопку генерировать вы получите вот такое:
Если MapActivity не импортируется само тогда вам нужно в папку libs/ засунуть http://dl.dropbox.com/u/61086119/maps.jar, его можно найти в папке android-sdk в папке libs любого проекта, но я вам упрощу жизнь...

2. Создание карты и её вывод на экран

Теперь открываем наш main.xml и вставляем код в нашу вьюшку MapView. Выглядеть оно все будет вот так:

main.xml
<?xml version="1.0" encoding="utf-8"?>
<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:apiKey="05M-7qOGbEjYduPPUdQgJt9ysL8HToawGdvu_ow"
/>


Дальше открываем MainActivity и наследуем её от MapActivity для того что бы наши объекты и классы которые мы дальше будем использовать импортировались без всяких проблем, ну и конечно для того что бы мы могли работать с картой. Пишем вот такое:

MainActivity.java
import android.os.Bundle;
import com.google.android.maps.MapActivity;
 public class AndroidGoogleMapsActivity extends MapActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
 
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}


Теперь запускаем проект и вуаля! у нас запустилась карта. Выглядеть все что вы сделали будет вот так:

3. Добавление увеличения / уменьшения карты

Для того что бы увеличивать и уменьшать карту нужно добавить элемент ZoomControls или ZoomButtons в нашу xml разметку, в нашем случае это main.xml и написать в MainActivity в onCreate() следующие строки:

// Displaying Zooming controls
MapView mapView = (MapView) findViewById(R.id.mapView); //определяем карту
mapView.setBuiltInZoomControls(true);
// задаем уменьшение и увеличение карты

4. Выбор типа карты

Для создания типа карты можете создать например меню или кнопки на карте которые будут вызывать один из этих методов:

mapView.setSatellite(true); // Satellite View
mapView.setStreetView(true); // Street View
mapView.setTraffic(true); // Traffic View


Пишутся они так же в onCreate(), в месте где вы захотите, например при нажатии кнопки, текствьюшки или при выборе элемента в меню.

5. Добавление маркера на карту.

Для добавления маркера на карту нам понадобиться создать кнопку по которой мы будем выводить маркер по заданным координатам.

Значит создаем кнопку в main.xml, надеюсь мне не нужно писать как создавать кнопки, и большинство знает как это делается, далее в MainActivity.java в onCreate() создаем листенера этой кнопки и внутри onClick() пишем следующий код:



String provider;
LocationManager locationManager;
//......
//задаем координаты
GeoPoint myLication = new GeoPoint((int) latitude, (int) longitude);  // перемещаемся туда при помощи данной функции, mc - объект типа MapController
mc.animateTo(myLication); // рисуем картинку на экране
Drawable makerDefault = getResources().getDrawable(R.drawable.pushpin); //выводим маркер на карте
MirItemizedOverlay itemizedOverlay = new MirItemizedOverlay(makerDefault); //задаем координаты маркеру
itemizedOverlay.addOverlayItem((int) latitude, (int) longitude, "My Location");
//выводи картинку по заданным координатам
mapView.getOverlays().add(itemizedOverlay);
//перемещаемся к центру экрана
mc.setCenter(new GeoPoint((int) latitude, (int) longitude));


latitude — широта, например 34159000.
longitude — долгота, например 73220000.

Если вы вставите эти параметры в геопоинт то наш маркет выведется где-то примерно в Азербайджане.

pushpin — наша картинка которую мы будем выводить на экране, на карте.


6. Нахождение местоположения пользователя при помощи GPS

Тут все довольно просто, использовать мы будем тот же код что и на один пункт выше, только с дополнительной вставкой определения местоположения, для этого нам нужно имплементировать нашей Activity дополнительный класс LocationListener вот так:

public class MainActivity extends MapActivity implements LocationListener {...}


А внутри всего этого создаем отдельный метод в который записываем наш код для определения местоположения.

String provider;
LocationManager locationManager;
//......
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        provider = locationManager.getBestProvider(criteria, false);
        //проверка на пустоту провайдера
        if ((provider != null) && !provider.equals("")) {
                //определяем местоположение
                Location location = locationManager.getLastKnownLocation(provider);
                locationManager.requestLocationUpdates(provider, 20000, 1, this);
                if (location != null) {
                        //задаем координаты
                        GeoPoint myLication = new GeoPoint((int) latitude, (int) longitude);  
                        // перемещаемся туда при помощи данной функции mc - MapController
                        mc.animateTo(myLication); 
                        // рисуем картинку на экране
                        Drawable makerDefault = getResources().getDrawable(R.drawable.pushpin); 
                        //выводим маркер на карте
                        MirItemizedOverlay itemizedOverlay = new MirItemizedOverlay(makerDefault); 
                        //задаем координаты маркеру
                        itemizedOverlay.addOverlayItem((int) latitude, (int) longitude, "My Location");
                        //выводи картинку по заданным координатам
                        mapView.getOverlays().add(itemizedOverlay);
                        //перемещаемся к центру экрана
                        mc.setCenter(new GeoPoint((int) latitude, (int) longitude));
                } else {
                        Toast.makeText(getBaseContext(), "Location can't be retrieved", Toast.LENGTH_SHORT).show();
                }
        } else {
                Toast.makeText(getBaseContext(), "No Provider Found", Toast.LENGTH_SHORT).show();
        }


Ну и как последний штрих нам нужно добавить примишены для работы с GPS, для работы с интернетом, и для определения местоположения. Выше тэга пишем следующее:

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


Ну и все, теперь запускаем приложение запускаем интернет запускаем GPS и запускаем программу, кстати если вы не сделали проверку на наличие интернета, по этому перед запуском программы включите интернет и жпс и тогда ни ошибок не будет, не должно быть (:

Все вопросы постим в комментариях, буду стараться отвечать по возможности.

Скачать с GiHub  & Скачать с Dropbox
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с dajver.blogspot.ru

39
    +21 surfers

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • dajver
          • домен blogspot.ru
          • домен dajver.blogspot.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции