quartz - esri

24
Quartz ArcGIS Runtime SDK for Android

Upload: others

Post on 06-Jul-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Quartz - Esri

QuartzArcGIS Runtime SDK for Android

Page 2: Quartz - Esri

Quartz (beta)

• Ce ofera?

• Utilizarea OpenGL

• controale si functionalitati de performanta inalta;

• utilizarea de Vector Tile Package

• utilizarea Map Package;

• biblioteci de simbolizare imbunatatite

• Simboluri militare

• PictureMarkerSymbol imbunatatit

• Editarea offline, geocodare, rutar

Page 3: Quartz - Esri

IDE pentru Android

Automation Builder

Inte

gra

ted

de

ve

lop

me

nt

En

vir

on

me

nt

An

dro

id S

tud

io

Runtime IDE

• Android Studio

Automation Builder

• Gradle: compilator, packaging binary code,automated tests, cross platform

Runtime

• ArcGIS Runtime Quartz (beta): GIS Functionality

• ArcGIS Runtime SDK for Android: GIS Functionality

Programming Language

• JavaP

rog

ram

min

gla

ng

ua

ge

Page 4: Quartz - Esri

IDE pentru .NET In

teg

rate

dd

eve

lop

me

nt

En

vir

on

me

nt

Vis

ua

l S

tud

io

RuntimeIDE

• Visual Studio

Runtime

• ArcGIS Runtime Quartz (beta): GIS Functionality

• ArcGIS Runtime SDK for .NET: GIS Functionality

Programming Language

• C#, VB.NET, C++

Pro

gra

mm

ing

lan

gu

ag

es

Page 5: Quartz - Esri

Creare proiect in trei pasi

Runtime

Privilegii

MapView

Adaugare

aunuiM

apV

iew

Alocarea de privilegiile aplicatiei

asupra echpamentului

Accesarea Runtime-ului

Custom

App.

1

2

3

Page 6: Quartz - Esri

Pasul 1

Runtime

Privilegii

MapViewCustom

App.

1

2

3

Page 7: Quartz - Esri

Adaugarea Runtime in proiect

• Se foloseste Gradle Automation Builder:

• Runtime-ul va fi inglobat in proiect, in mod automat, de catre Gradle

maven {

url 'https://esri.bintray.com/arcgis'

}

dependencies {

compile 'com.esri.arcgisruntime:arcgis-android:100.0.0-beta-3'

}

Page 8: Quartz - Esri

Pasul 2

Runtime

Privilegii

MapViewCustom

App.

1

2

3

permissions-separated operating system

Page 9: Quartz - Esri

Privilegiile aplicatiei asupra echipamentului

• Privilegiile sunt date in proiectul Android Studio

- Acces la internet:

- Utilizarea OpenGL (versiunea 2.x)

<uses-feature android:glEsVersion="0x00020000"

android:required="true" />

<uses-permission android:name="android.permission.INTERNET"

/>

Page 10: Quartz - Esri

Permisiuni

• Acces la Internet (cele mai multe dintre aplicatiile mobile)

• Acces la fisierele de pe disk (unele aplicatii)

• Acces la GPS pentru aplicatiile de localizare a dispozitivului

mobile

• Aplicatiile desvoltate cu ArcGIS Runtime necesita utilizarea

OpenGL 2.x

Page 11: Quartz - Esri

Pasul 3

Runtime

Privilegii

MapViewCustom

App.

1

2

3

Page 12: Quartz - Esri

Adaugarea unui MapView

• Adaugarea unui MapView in proiectul Android Studio:

• Initializare continut MapView (basemap)

<com.esri.arcgisruntime.mapping.view.MapView

android:id="@+id/mapView"

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

</com.esri.arcgisruntime.mapping.view.MapView>

mMapView = (MapView) findViewById(R.id.mapView);

map = new ArcGISMap(Basemap.Type.IMAGERY, 44.436840, 26.097748,14);

mMapView.setMap(map);

Page 13: Quartz - Esri

Ce aduce nou?Quartz

Page 14: Quartz - Esri

Quartz (beta)

• ArcGIS Runtime SDK Quartz (beta) :

• controale si functionalitati de performanta

inalta;

• utilizarea de Vector Tile Package

• utilizarea Vector Tile Package;

• biblioteci de simbolizare imbunatatite

• Simboluri militare

• PictureMarkerSymbol imbunatatit

•Clasa ArcGISFeatureTable optimizata (esteredusa latenta si este imbunatatita afisarea);

•MapView dispune de metode noi

• Ex. setViewPoint, ListenableFuture

•Clasa GeometryEngine cu metode:

• geodesicDistance()

• geodesicMove()

• Clip()

Page 15: Quartz - Esri

Runtime SDK for Java vs Runtime SDK Quartz

Adaugare Runtime

Adaugare harta

Permisiuni

Adaugare Runtime

Adaugare harta

Permisiuni

<com.esri.arcgisruntime.mapping.view.MapView

android:id="@+id/mapView"

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

</com.esri.arcgisruntime.mapping.view.MapView>

<com.esri.android.map.MapView

android:id="@+id/map"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

mapoptions.MapType="Streets"

mapoptions.center="44.436840, 26.097748"

mapoptions.ZoomLevel="17">

</com.esri.android.map.MapView>

compile 'com.esri.arcgis.android:arcgis-

android:10.2.8-1'compile 'com.esri.arcgisruntime:arcgis-

android:100.0.0-beta-3'

Runtime SDK for Java Quartz

<uses-feature

android:glEsVersion="0x00020000"

android:required="true" />

Page 16: Quartz - Esri

Quartz for AndroidDemo

Page 17: Quartz - Esri

Quartz / Layere Operationale

• Adaugarea unui layer operational in map

mServiceFeatureTable = new ServiceFeatureTable(getResources().getString(R.string.urlFeatureLayer));

mFeaturelayer = new FeatureLayer(mServiceFeatureTable);

map.getOperationalLayers().add(mFeaturelayer);

1

Page 18: Quartz - Esri

Quartz / Identify

• Eveniment onTouch de pe MapView

• Metoda Identify de pe MapView

• Selectare in harta

mMapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mMapView) {

@Override

public boolean onSingleTapConfirmed(MotionEvent e) {

Log.d("DEMO", "Atingere harta");

return super.onSingleTapConfirmed(e);

}

});

mClickPoint = new android.graphics.Point((int) e.getX(), (int) e.getY());

final ListenableFuture<IdentifyLayerResult> future = mMapView.identifyLayerAsync(mFeaturelayer,

mClickPoint, 5, 1);

future.addDoneListener(new Runnable() {

@Override

public void run() { Log.d("DEMO", "Eveniment Identify");}

});

if (resultGeoElements.get(0) instanceof ArcGISFeature) {

mSelectedArcGISFeature = (ArcGISFeature) resultGeoElements.get(0);

mFeaturelayer.selectFeature(mSelectedArcGISFeature);

}

2

3

4

Page 19: Quartz - Esri

Quartz / cautarea

• Interogarea FeatureTable

• Rezultat/Selectare

QueryParameters query = new QueryParameters();

//criteriu de interogare

query.setWhereClause("upper(nume) LIKE '%" + txt.toUpperCase() + "%'");

// apel pe serviciu creaza o lista

final ListenableFuture<FeatureQueryResult> future = mServiceFeatureTable.queryFeaturesAsync(query);

// listener - este declansat atunci cand clientul primeste rezultatul

future.addDoneListener(new Runnable() {

@Override

public void run() {

}

});

5

Feature feature = result.iterator().next();

// obtinem extentul

Envelope envelope = feature.getGeometry().getExtent();

mMapView.setViewpointGeometryWithPaddingAsync(envelope, 200);

//selectam elementul

mFeaturelayer.selectFeature(feature);

6

Page 20: Quartz - Esri

Quartz / Clasificarea datelor

• Stabilirea campului (campurilor) de simbolizare

• Crearea simbolurilor

• Crearea claselor de simbolizare

• Randarea

SimpleFillSymbol defaultFillSymbol = new SimpleFillSymbol(

SimpleFillSymbol.Style.NULL,

Color.BLACK,

new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.GRAY, 2));

List clasa1 = new ArrayList();

clasa1.add("CASA");

uniqueValueRenderer.getUniqueValues().add(new UniqueValueRenderer.UniqueValue(null, null,

simbolClasa1, clasa1));

8

mFeaturelayer.setRenderer(uniqueValueRenderer);

9

UniqueValueRenderer uniqueValueRenderer = new UniqueValueRenderer();

uniqueValueRenderer.getFieldNames().add("categorie");

7

1 0

Page 21: Quartz - Esri

Quartz for .NETDemo

Page 22: Quartz - Esri

.NET / Layere Operationale

• Adaugarea unui layer operational in map

Uri serviceUri = new Uri("http://...");featureLayer; FeatureLayer featureLayer = new FeatureLayer(serviceUri);myMap.OperationalLayers.Add(featureLayer);

1

Page 23: Quartz - Esri

.NET / Clasificarea datelor

• Stabilirea campului (campurilor) de simbolizare

• Crearea simbolurilor

• Crearea claselor de simbolizare

• Randarea

UniqueValueRenderer featureRenderer= new UniqueValueRenderer();featureRenderer.FieldNames.Add("categorie");

7

var defaultFillSymbol = new SimpleFillSymbol(SimpleFillSymbolStyle.Null, Colors.Gray, null);featureRenderer.DefaultSymbol = defaultFillSymbol;featureRenderer.DefaultLabel = "Altele";

8

featureRenderer.UniqueValues.Add(new UniqueValue("CASA", "CASA", simbolClasa1, "CASA"));featureRenderer.UniqueValues.Add(new UniqueValue("DEPOZIT", "DEPOZIT", simbolClasa2, "DEPOZIT"));

9

featureLayer.Renderer = featureRenderer;

1 0

Page 24: Quartz - Esri

Va multumim