вторник, 4 декабря 2012 г.

Android Google Maps API v2. Урок 2. Отображение карты

Итак, в первом уроке мы получили ключ разработчика и сейчас хотим его использовать по назначению.

1. Скачиваем необходимые библиотеки

Первым делом необходимо скачать и установить Google Play SDK и Android Support Library, сделать это можно из Eclipse. Для этого заходим в меню Window - Android SDK Manager, внизу находим Extras - Google Play Services и Extras - Android Support Library, жмем чекбокс и кнопку Install Packages.

Пакеты устанавливаются...

Устанавливаются...

Установились.

2. Добавляем библиотеки в Eclipse.

Необходимо в Eclipse добавить эти экстрасы. Правой кнопкой в Package Explorer. Import. Android - Existing Android Code Into Workspace. Выбираем директорию, в которой был установлен Android SDK, далее в ней папку Extras, и далее:
а) android - support - v4. Finish
б) google - google_play_services - libproject - google-play-services_lib. Finish

3. Создаем новый проект в Eclipse

Как создать проект я думаю все знают. А кто не знает - найдет кучу инструкций по Android Hello World. После создания проекта подключаем к нему библиотеки. Правой кнопкой по проекту в Package Explorer. Properties. Android. Видим вкладку Library и кнопку Add. Добавляем скаченные и импортнутые библиотеки.
Заодно проверяем версию проекта, она должна быть не ниже 2.2!


4. Правим Android Manifest

Добавляем необходимые разрешения. Здесь они немного избыточные, но это нам пригодится в будущем:
    
    

    
    

   
    
    
    
    
    

    

    

    

    

    

    

    
    
 
Здесь нужно подставить название своего пакета


В секции (!!!) добавляем свой API ключ:
        



И собственно всё

5. Правим Activity
Вместо Activity в секцию extends пишем FragmentActivity

6. Правим Layout
В layout нашей активити пишем:


Собираем приложение и проверяем. Желательно на устройстве, нормальной работы интернета на эмуляторе лично я не получил.


11 комментариев:

Unknown комментирует...

Проделал все действия и при запуске вылетело сообщение в отдельной вкладке Source not found. Подскажите пожалуйста что делать?

Oleg Mayorov комментирует...

думаю, стоит закрыть это окно, остановить приложение и посмотреть стек ошибок. Забыл уточнить, что вместо Activity в секцию extends пишем FragmentActivity.

Анонимный комментирует...
Этот комментарий был удален автором.
Анонимный комментирует...

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ua/com.example.ua.MainActivity}: android.view.InflateException: Binary XML file line #1: Error inflating class fragment
есть идеи?

Jabacoder комментирует...

Обновите пожалуйста весь этот урок, в FireFox половина вообще не отображается.

Дмитро комментирует...

У меня тоже была такая проблема, я правильно подключил либы и...
Добавил следующий пункт

http://www.user.tu-berlin.de/hennroja/tutorial_fixing_java.lang.NoClassDefFoundError%20com.google.android.gms.R$styleable.html

Jabacoder комментирует...

Не работает, в эклипсе все время пропадает R.java файл
Кароче сплошной гемор, не работает.
Работа с картами в Android это просто ужас. Нужен нормальный мануал.

Oleg Mayorov комментирует...

Вот не знаю что у вас не получается, только что вспоминал как создавать проект с картой по своему уроку, всё получилось.
Что касается парсера листингов в блоге, это великая проблема. Скоро блог переедет на амазон, там поставлю нормальный парсер и будут красивые листинги

Jabacoder комментирует...

Кароче говоря я застрял на том что у меня показывается только сетка карты, а сама карта не загружается.

Unknown комментирует...

Здравствуйте!
Пытаюсь делать проект с картами,
по вашему уроку. в Extras нет "а) android - support - v4."
у меня он сразу лежит в Android Dependencies.
На счет "google - google_play_services - libproject - google-play-services_lib" нашел, поставил.
Но нигде ничего не прибавилось,
при повторном входе в Properties -
вместо галочки был - крестик.
Я так понял он не подгрузил библиотеку. Что я не так сделал?

Unknown комментирует...

Здравствуйте.
Таки подключил библиотеки :)
и сразу наткнулся на другую проблему:

02-19 03:46:07.135: E/AndroidRuntime(390):
FATAL EXCEPTION: main
02-19 03:46:07.135: E/AndroidRuntime(390):
java.lang.RuntimeException:
Unable to start activity
ComponentInfo{com.alahanda/com.alahanda.MainActivity}:
android.view.InflateException:
Binary XML file line #7:
Error inflating class fragment

Вот сам main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<fragment
android:id="@+id/map"
android:layout_height="match_parent"
android:layout_width="match_parent"
class="com.google.android.gms.maps.MapFragment"
xmlns:android="http://schemas.android.com/apk/res/android">
</fragment>

</RelativeLayout>

Все сделано по уроку. Почему он не видит класс фрагмента?