ArcGIS for

Report 9 Downloads 203 Views
Getting Started with the Smartphone and Tablet ArcGIS Runtime SDKs David Martinez, Kris Bezdecny, Andy Gup, David Cardella

Agenda





Intro -

Trends

-

Overview

ArcGIS for … -



iOS

-

Windows Phone

-

Android

Wrap up -

Q and A

Recent Trends - Mobile

This is the new computing phase

It’s mobile and wireless together

Mobile internet is now the foundation for services, content, and apps

More than Just Phones COMPUTING

WIRELESS CONVERGED

CONSUMER

Most Internet user will be mobile

Mobile Trends - Consumer Increased Usage of Smartphones %

U.S. Smartphone Market Penetration

Feature Phones

Smartphones

Source: The Nielson Company

GIS Is Accessible to a Larger Market

Mobile Trends - Consumer 50% of people use maps/search on their phones

Source: Biz Tech Day

New market potential

Mobile Trends - Enterprise Enterprise usage of Smartphones and tablets on the rise

Why? -

Executives

-

Bring-your-own-device

-

Cost

-

More control over admin

Trending towards iOS and Android Platforms

How is this affecting Mobile GIS? •





Enterprise -

Extend the reach of GIS

-

Improve field productivity

-

Replace paper based workflows

-

Make timely and accurate decisions

-

Advanced analysis

-

GIS to your whole organization

Consumer -

Huge market potential

-

Your data/analysis to consumers

Citizen and organizational engagement -

Volunteered Geographic Information (VGI)

Mobile Applications ArcGIS running on …

Windows Mobile

Android iOS

Microsoft Windows Phone

Windows

Rugged and Embedded Devices

Smartphones and Tablets

ArcGIS on Smartphones and Tablets iOS, Windows Phone and Android Devices •

Designed for touch-screen phones



One handed use



Connected Workflows (Wifi, 3G)



Assisted-GPS Integration



Replace Paper Surveys -

Intelligent forms

-

Field Validation

-

Media Integration Emergency Operations

Service Requests Parcel Valuation VGI Campus Maps

ArcGIS on Rugged Devices Windows and Windows Mobile Devices

Designed for harsh field conditions • One handed/vehicle-mounted use • Occasionally connected workflows • High accuracy data collection •

-



GPS integration Laser integration

Replace Paper Surveys -

Intelligent forms Barcode integration

Land Management Water Facilities Mapping Asset Maintenance/Inspection Emergency Operations Service Requests

Smartphone Strategy ArcGIS accessible by many

Android

iOS

Windows Phone

Tools to build focused solutions

Agenda



Overview



ArcGIS for … -



iOS

-

Windows Phone

-

Android

Wrap up -

Q and A

Getting Started with the ArcGIS Runtime SDK for iOS Kris Bezdecny

Agenda



What can you do with the SDK?



Layers and Web Maps



Data Collection and Editing



Development Considerations



Tips and Tricks

What can you do with the SDK?



Service Layers -





Supports multiple map projections

Graphics -

“Sketch” graphic elements on a map

-

Create Callouts

Tasks -

Query, Identify, and Find GIS features

-

Collect and modify GIS features

-

Locate/Geocode addresses

-

Geometry operations

-

Analytical Tasks

Sample application

Getting Started •

Intel-based Macintosh -



Snow Leopard or Lion

iOS devices -

Essential for testing!

-

iOS 3.1.2 or higher



Join iOS Developer Program



Download Xcode -



Includes Apple iOS SDK

ArcGIS Runtime SDK for iOS -

Resource Center

Accessing data





Mashup layers -

Dynamic, cached, and feature layers

-

Secured services

-

Bing, Open Street Map

Web maps -

ArcGIS Online

-

Portal for ArcGIS

Access using the REST endpoint URL

Pattern: Add layers to the map view

Create map view instance

Set delegate

Create layer or web map instance

Add layer to map view

Design map view interface

Adding a map view

Feature layers



Client-side layer



Feature Layer = Graphics Layer + Query Task



Inherits layer definition from the service



Modes -

On demand

-

Snapshot

-

Selection

Required for data editing

Pattern: Collect data

Add feature layer to map view

Create feature

Collect location

Collect attributes

Collect attachments

Commit edits to server

Location, attributes, and attachments can be added in any order

Editing existing data

Objective-C Considerations •

Class construction



Passing (verbose) messages



Manage your memory!



Delegation and protocols

Tips-and-tricks •

Learn Objective-C and Cocoa Touch -



Debugging -



Xcode TN2239

Performance testing -

Use a physical device



Universal apps



Human Interface Guidelines

Recommended Tech Sessions for iOS

Building Applications with ArcGIS Runtime SDK for iOS – Part I -

Wednesday, 10:30am, Catalina/Madera

Building Applications with ArcGIS Runtime SDK for iOS – Part II -

Wednesday, 1:00pm, Catalina/Madera

Getting Started with ArcGIS Runtime Windows Phone David Martinez

Agenda



Tools



Location



Maps



Query



Design Considerations



Performance Basics

Tools



Windows 7 or Windows Vista with Service Pack 2



Visual Studio 2010



Windows Phone devices



Join App Hub



Windows Phone SDK Tools



ArcGIS Runtime SDK for Windows Phone

Location

GpsLayer

GeoCoodinateWatcher

Maps and Accessing Data





Maps and layers -

Feature layers, cached and dynamic map services

-

Secured services

-

Bing, Open Street Map

Web maps -

ArcGIS Online

-

Portal for ArcGIS

Query

Design Considerations Type of application

Resource management

Design and implementation

Remote services

Performance

Threads

UI

Data binding. Rasterizing. Events. Very busy!

Compositor

Smooth animations for bitmap cached elements Touch responsiveness thread

Touch Background OS

App parsing logic, long-running tasks, etc. Operating system compositing and overlays

Performance Counters



Compositor Frame Rate



UI Thread Frame Rate



Texture memory



Surface counter



Intermediate surface count



Fill Rate

Recommended Tech Sessions for Windows Phone

Building Applications with ArcGIS Runtime SDK for Windows Phone – Part I -

Wednesday, 2:45pm, Pasadena/Ventura/Sierra

Building Applications with ArcGIS Runtime SDK for Windows Phone – Part II -

Wednesday, 4:30pm, Pasadena/Ventura/Sierra

Questions?

Getting Started with ArcGIS Runtime SDK for Android Andy Gup, Tech Lead, Esri Developer Network

@agup

Agenda – ArcGIS for Android



Android architecture



Development basics and requirements



Common ArcGIS coding patterns

Microsoft Clip art

My demo setup



Eclipse Indigo w/ J2EE



ArcGIS SDK for Android v1.0.1 + samples!



Android SDK v4.0.3 (API v15)



Motorola device driver for Windows 64-bit



Android Atrix running Android v2.3.6

Microsoft Clip art

Hello World

Android basic setup ArcGIS Runtime SDK for Android

IDE

Java Development Kit (JDK)

Android SDK + Device

Android Development Workflow

Eclipse Android device Write Java

Launch as Android app Debug/log app

Android SDK Compile to Dalvik classes Deploy to device/emulator

Dalvik VM Run app

ADB Device Deamon

Android components User Interface View View

Activity Activity

View View

App Service Service Event Data / Listeners / Content Handlers Providers

Event Event Listeners / Listeners / Handlers Handlers

ArcGIS Application for Android

Development Basics

What do you need? •

Windows, Mac OS, or Linux!



ArcGIS for Android SDK v1.0.1



Eclipse 3.5 (Galileo) or greater



Java JDK 6



Android SDK v2.2 (API 8) or greater



Android Development Tools (ADT 16)



Android device! (Android v2.2) or greater



USB Device driver

Microsoft Clip art

Android SDK

http://developer.android.com

Download the SDK

http://esriurl.com/android

Android Project Overview

The main mapping component - MapView class

public class HelloWorld extends Activity { MapView map = null; /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); map = (MapView) findViewById(R.id.map); } }

http://esriurl.com/AndroidMapView

Adding map layers Tiled Map Service map = new MapView(this); map.addLayer(new ArcGISTiledMapServiceLayer( "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer")); setContentView(map);

Dynamic Map Service map.addLayer(new ArcGISDynamicMapServiceLayer( "http://.../ArcGIS/rest/services/Demographics/ESRI_Population_World/MapServer"));

Feature Service map.addLayer(new ArcGISFeatureLayer(url,MODE.SNAPSHOT));

Image Service map.addLayer(new ArcGISImageServicesLayer(url, null));

com.esri.android.map vs. com.esri.core.map



com.esri.android.map -

Displaying, altering or removing data from the map. private MapView map = null;



com.esri.core.map -

Use when defining elements used in feature and image services. Graphic g = new Graphic(feature.getGeometry(),redCircleSymbol);

Microsoft Clip art

Add data demo

Handling map events class MyTouchListener extends MapOnTouchListener { Graphic g; // first point clicked on the map Point p0 = null; int uid = -1; public MyTouchListener(Context arg0, MapView arg1) { super(arg0, arg1); } public boolean onDragPointerMove(MotionEvent from, MotionEvent to) { if (uid == -1) { // first time g = new Graphic(null, sfs); p0 = map.toMapPoint(from.getX(), from.getY()); uid = gLayer.addGraphic(g); } else { Point p2 = map.toMapPoint(new Point(to.getX(), to.getY())); Envelope envelope = new Envelope(); envelope.merge(p0); envelope.merge(p2); gLayer.updateGraphic(uid, envelope); } return true; } ... }

Touch listeners demo

Microsoft Clip art

Editing Feature Layers

// check there have been some edits before applying the changes if (hasEdits) { // set objectID field value from graphic held in featureset attrs.put(featureLayer.getObjectIdField(), someEditedValue); Graphic newGraphic = new Graphic(null, null, attrs, null); featureLayer.applyEdits(null, null, new Graphic[] { newGraphic }, createEditCallbackListener(updateMapLayer)); }

Editing demo

Tracking Device Location

map.setOnStatusChangedListener(new OnStatusChangedListener() { private static final long serialVersionUID = 1L; public void onStatusChanged(Object source, STATUS status) { if (source == map && status == STATUS.INITIALIZED) { } } }

Location demo

Microsoft Clip art

Geoprocessing

new ViewShedQuery().execute(params); class ViewShedQuery extends AsyncTask { @Override protected void onPostExecute(GPParameter[] result) { ... } @Override protected GPParameter[] doInBackground(ArrayList... params1) { gp = new Geoprocessor(“http://www.mygisserver.com/arcgis...”); ... } }

Geoprocessing demo

Tips-and-tricks •

Test using a phone and tablet



Android Help: http://developer.android.com/



Android Help -> User Interface Best Practices



Which Android version? Know your users!



Troubleshooting ArcGIS? Use the Android Debug Bridge (ADB) and Logcat

Log.e("Debug", String.valueOf(_currentLocation.getLatitude()));

Recommended Tech Sessions for Android •

Advanced Development with ArcGIS API for JavaScript -



Building Applications with ArcGIS Runtime SDK for Android—Part I -



Wednesday @ 10:30a, Pasadena/Ventura

Thursday @ 8:30a, Primrose A

Building Applications with ArcGIS Runtime SDK for Android—Part II -

Thursday @ 10:15a, Primrose A

Wrap-up

Intelligent Maps Are the New Medium Integrating Services (Data, Maps, Models…) Accessibility

Support Applications

Maps



Pop-ups



Editing



Time



Analysis



Workflows



Query

Services

Simplifying Using ArcGIS . . . . . . Communicating Geographic Understanding to Everyone

Maps Can Be Shared Across Devices Making Maps available to all

Windows Phone

Android

iOS

Web Sites

Desktop

Browsers

One Map

Online Services

. . . Enhancing Access and Collaboration

Deployment considerations



Platform developer requirements



Esri Attribution



Esri Licensing



Submittal

Developer Developer Requirements



Developer account



SDK -

OS updates



Devices



Deploying -

Development

-

App Store/Marketplace

-

Enterprise

Esri Attribution





Attribution in About or Credits -

API

-

Data

Esri Logo -

If using data from AGOL

Esri Licensing



Enterprise apps deployed Internally -



Requires ArcGIS Server license Deploy unlimited number of applications

Public Apps deployed in App Store/Marketplace/Market -

Free app -

-

Deploy unlimited number of applications

For fee (Sales, Ad, in-app purchases, etc…) -

Lic fee applies

Native vs Mobile Web User Experience

Native

Market Penetration

Mobile Web Cost Effective Fragmentation Functionality

Resources



Twitter: David: @dmdevdude Andy: @agup Dave: @dcardella



Resource Centers: http://resources.argis.com