Hello GIS World!

Hello GIS World!

Rynek aplikacji mobilnych rozszerza się w niewyobrażalnym tempie. Optymalizacja pracy, niski koszt użytkowania, ogromna funkcjonalność schowana za prostotą interfejsu – wszystko to składa się na coraz większą popularność tych produktów.

Smartfony i tablety stały się częścią naszego życia. Towarzyszą nam zawsze i wszędzie, oferując praktycznie nieograniczone możliwości. Jedną z podstawowych informacji serwowanych przez nasze urządzenia przenośne jest lokalizacja. Użytkownicy coraz bardziej doceniają potęgę tej informacji, umożliwiającej ograniczenie wyszukiwania obiektów do najbliższego otoczenia oraz pozwalającej użytkownikowi na wykonywanie zaawansowanych analiz przestrzennych i wykorzystywanie narzędzi GIS.

Dlaczego Android?

Aplikacje na platformę Android niewątpliwie wiodą prym na europejskim rynku smartfonów. Jak donosi Kantar Worldpanel, firma specjalizująca się w analizowaniu rynku mobilnego, Android jest dominującym systemem operacyjnym w świecie urządzeń mobilnych, pozostawiającym konkurencję daleko w tyle. Dane z początku 2014 roku pokazują, że prawie 69 proc. urządzeń mobilnych posiada system operacyjny Android. Firma Apple zajęła drugą pozycję z 19 proc., natomiast na trzecim miejscu znalazł się Windows z 9,7 proc.

Możliwości ArcGIS Runtime SDK

Odpowiedzią Esri na wciąż ewoluujący rynek technologii mobilnych są oprogramowania ArcGIS Runtime SDK for Android, ArcGIS Runtime SDK for iOS oraz ArcGIS Runtime SDK for Windows Phone, pozwalające na tworzenie aplikacji mapowych na urządzenia przenośne.
Developer ma możliwość wykorzystywania elementów znajdujących się w sieci (ArcGIS Online, ArcGIS for Server, Portal for ArcGIS) lub lokalnie na urządzeniu. Do najbardziej znaczących możliwości zaliczają się:

  • dodawanie warstw opublikowanych na ArcGIS for Server oraz Portal for ArcGIS,
  • praca z danymi w trybie offline (wyświetlanie oraz edycja),
  • synchronizacja online danych zmodyfikowanych uprzednio w trybie offline,
  • przechowywanie lokalnie kafelkowanych map podkładowych,
  • wykorzystywanie narzędzi umożliwiających analizy przestrzenne,
  • wyświetlanie bieżącej lokalizacji urządzenia,
  • wyznaczanie trasy w trybie online i offline.

Poniższa publikacja pozwala krok po kroku stworzyć podstawową aplikację mobilną z wykorzystaniem oprogramowana ArcGIS Runtime for Android.

Od czego zacząć?

Tak jak w przypadku innych technologii, rozpoczynamy od konfiguracji środowiska i podstawowego programu „Hello World!”. Celem takiego programu jest demonstracja poprawności konfiguracyjnej środowiska programistycznego. Pierwotnie program ten wypisywał na standardowym wyjściu „Hello World!”. Naszym odpowiednikiem będzie wyświetlenie w aplikacji mapy podkładowej w określonym zasięgu przestrzennym.

Konfigurowanie środowiska

Zaczynamy od pobrania ze strony http://developer.android.com/sdk/index.html pakietu ADT (ADT Bundle) zawierającego środowisko programistyczne Eclipse IDE z wbudowanym dodatkiem ADT (Android Developer Tools). Środowisko nie wymaga instalacji i jest skonfigurowane tak, aby użytkownik mógł natychmiast rozpocząć pracę.
Kolejnym krokiem będzie instalacja grupy dodatków dla środowiska programistycznego Eclipse wchodzących w skład SDK: ArcGIS for Android Core , ArcGIS for Android Doc and Samples. Dodatki oferują szeroki zakres funkcjonalność, narzędzi oraz dokumentacji i przykładów potrzebnych do tworzenia aplikacji z wykorzystaniem technologii ArcGIS.
Instalacja ArcGIS Android Eclipse plugin przebiega następująco:

1. Uruchamiamy Eclipse IDE.
2. Z menu wybieramy Help > Install New Software.
3. W prawym górnym rogu klikamy Add.
4. Wypełniamy pole Name: „ArcGIS Android Public updatesite” oraz Location: http://developers.arcgis.com/android/eclipse/updatesite/.
5. Klikamy OK.
6. W oknie „Available Software” zaznaczamy „ArcGIS for Android” i klikamy Next.
7. Pojawia się lista oprogramowania do zainstalowania. Klikamy Next.
8. Po przeczytaniu należy zaakceptować warunki umowy, a następnie kliknąć Finish.
9. Aby poprawki zostały uwzględnione w środowisku, uruchamiamy ponownie Eclipse.
Oprogramowanie ArcGIS Runtime SDK for Android właśnie zostało zainstalowane i zintegrowane ze środowiskiem programistycznym Eclipse IDE. Dokładna instrukcja instalacyjna znajduje się na stronie: https://developers.arcgis.com/android/.

Nowy projekt ArcGIS na platformę Android

W celu stworzenia nowego projektu wykorzystującego oprogramowanie ArcGIS Runtime for Android w środowisku programistycznym Eclipse należy postępować według poniższej instrukcji:
1) W Eclipse tworzymy nowy projekt File > New > Project (rys. 1.).
2) Wybieramy z listy „ArcGIS Project for Android”.

Rys1 Tworzenie nowego projektu w środowisku programistycznym Eclipse

Rys1 Tworzenie nowego projektu w środowisku programistycznym Eclipse

3) Wypełniamy formularz nowego projektu i klikamy Next (rys. 2.).

Rys2 Formularz nowego projektu

Rys2 Formularz nowego projektu

4) Uzupełniamy formularz „Application Info”, dodając nazwę pakietu gwarantującą unikalność nazw klas, oraz klikamy Finish (rys. 3.).

Rys3 Formularz Application Info

Rys3 Formularz Application Info

W ten sposób stworzyliśmy nowy projekt ArcGIS na platformę Android. Następnym krokiem będzie dodanie do aplikacji serwisu mapowego i ustawienie zasięgu początkowego dla mapy. ArcGIS oferuje pakiet map bazowych zawierający mapy referencyjne dla całego świata, które mogą służyć jako kontekst dla tworzonej aplikacji. Informacje na temat map bazowych dostępne są na stronie http://www.arcgis.com/features/maps/basemaps.html .

Hello, GIS World!

Kolejnym etapem będzie edycja kodów XML oraz Java w celu dodania do standardowego schematu nowego projektu elementów naszej aplikacji.
W nowym projekcie rozwijamy drzewo pakietów. Będziemy edytować następujące pliki:

  • HelloGISWorld/src/com.esri.android.samples/HelloWorldActivity.java
  • HelloGISWorld/res/layout/main.xml

1) Otwieramy plik HelloWorld/res/layout/main.xml.Domyślny widok prezentuje graficzną interpretację pliku XML. Po przejściu do zakładki „main.xml” widzimy docelowy plik XML definiujący elementy intefejsu. Plik main.xml zawiera dwa znaczniki. LinearLayout definiuje układ liniowy poprzez określenia sposobu rozłożenia poszczególnych elementów widoku (wertykalny lub horyzontalny). Drugi znacznik TextView służy do dodania teksu w oknie aplikacji. Zmienna „@string/hello” zdefiniowana jest w pliku HelloGISWorld/res/values/string.xml. W pliku tym również możemy zdefiniować nazwę aplikacji:

<string name=”app_name”>HelloGISWorld</string>

2) Usuwamy element <TextView>
/* Usuń z kodu */
<TextView
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”@string/hello”
/>
3) Dodajemy definicję obiektu MapView oraz początkowy zasięg mapy:
<!— Utworzenie obiektu MapView i ustawienie zasięgu początkowego –>
<com.esri.android.map.MapView
android:id=”@+id/map”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
initExtent = „2320118.07 6829804.43 2354514.73 6852735.54”>
</com.esri.android.map.MapView>

4) Następnie należy zachować zmiany wprowadzone w pliku main.xml.
5) Otwieramy plik: HelloGISWorld/src/com.esri.android.samples/HelloGISWorldActivity.java poprzez podwójne kliknięcie. Podmieniamy istniejący kod klasy na następujący:
package pl.esri.arcgis.android.hellogisworld;

import android.app.Activity;
import android.os.Bundle;
import com.esri.android.map.MapView;
import com.esri.android.map.ags.ArcGISTiledMapServiceLayer;

public class HelloGISWorldActivity extends Activity {
// Obiekt MapView definiuje widok mapy w aplikacji
MapView mMapView = null;;
// Obiekt ArcGISTiledMapServiceLayer definiuje kafelkowaną warstwę podkładową
ArcGISTiledMapServiceLayer tileLayer;

/** Wywoływane przy tworzeniu klasy. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mMapView = (MapView)findViewById(R.id.map);
tileLayer = new ArcGISTiledMapServiceLayer( „http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer”);
// Dodanie warstwy podkładowej do obiektu MapView
mMapView.addLayer(tileLayer);
}

protected void onDestroy() {
super.onDestroy();
}

protected void onPause() {
super.onPause();
mMapView.pause();
}

protected void onResume() {
super.onResume();
mMapView.unpause();
}
}

Kod odpowiadający za dodanie warstwy podkładowej do obiektu widoku mapy mMapView to:

tileLayer = new ArcGISTiledMapServiceLayer( „http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer”);
mMapView.addLayer(tileLayer);

6) Zachowaj zmiany w pliku HelloGISWorldActivity.java
Uruchomienie aplikacji
Po wykonaniu wszystkich powyższych kroków, dodaniu mapy i ustawieniu początkowego zakresu aplikacja jest już gotowa do uruchomienia. W tym celu:
1) klikamy prawym przyciskiem myszy na folder projektu HelloGISWorld w drzewie katalogów Project Explorer. Należy wybrać opcję: Run As > Android Application,
2) wybieramy urządzenie fizyczne podpięte do komputera lub emulator (wirtualne urządzenie mobilne) w celu uruchomienia aplikacji,
3) po uruchomieniu aplikacji na urządzeniu mobilnym klikamy na mapę w celu przybliżenia.

Rys. 4. Efekt końcowy utworzonej aplikacji „Hello GIS World!”

Rys. 4. Efekt końcowy utworzonej aplikacji „Hello GIS World!”

Przydatne materiały
Materiały treningowe dla developerów aplikacji na platformę Android znajdują się na stronie: http://developer.android.com/training/index.html.
Materiały oraz przykłady aplikacji niezbędne przy tworzeniu aplikacji z wykorzystaniem oprogramowania ArcGIS Runtime SDK for Android umieszczone zostały na stronie :
https://developers.arcgis.com/android/.

Czy zainteresował Cię ten materiał?