maps for phonegap - s3.amazonaws.com filecreate native apps for google play, app store . phonegap +...

33
Maps for PhoneGap Andy Gup, Esri U.S. @agup

Upload: others

Post on 03-Sep-2019

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Maps for PhoneGap Andy Gup, Esri U.S.

@agup

Page 2: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

PhoneGap vs Cordova

PhoneGap came first Original developer Nitobi Adobe acquired Nitobi (Oct 2011) Apache Cordova open source project (2011) Share same code base Adobe PhoneGap Build (Sep 2012) Becomes top-level Apache Project (Oct 2012)

Page 3: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

What is PhoneGap?

Native wrapper around headless browser Better access to storage and sensors Create native apps for Google Play, App Store

Page 4: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

PhoneGap

+ Android SDK Java Project

HTML + Mobile JavaScript

Framework

=

Page 5: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Native deployment model

Page 6: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Native deployment model

Page 7: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Access to sensors

Direct access to: GPS Camera SD Card Compass Accelerometer Connection State …

Page 8: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Regular javascript can’t do this…

PhoneGap can lock screen AWAKE. PhoneGap works when app is minimized!

Page 9: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment
Page 10: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Platforms

Page 11: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Platforms & Function

Source: http://en.wikipedia.org/wiki/PhoneGap

Page 12: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Plugins

Page 13: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Download the library http://cordova.apache.org

Page 14: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Install Node.js

Page 15: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Install Cordova

npm install –g cordova

Page 17: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Cordova CLI

Use correct “Platform Guide” Global create command

Page 18: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Create PhoneGap Project

$ cordova create hello com.example.hello “HelloWorld”

Directory Project namespace

Display Text

Page 19: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Create PhoneGap Project

Page 20: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Create PhoneGap Project

$ cordova create hello com.example.hello “HelloWorld”

$ cd hello

$ cordova platform add Android

$ cordova build

Page 21: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Add Android platform

Page 22: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Open Project in Eclipse

Page 23: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Your new project!

Page 24: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Enable Geolocation* STEP 1 $ cordova plugin add org.apache.cordova.geolocation

STEP 2 - in app/res/xml/config.xml <feature name="Geolocation"> <param name="android-package" value="org.apache.cordova.GeoBroker" /> </feature>

STEP 3 - in app/AndroidManifest.xml <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_LOCATION_EXTRA_COMMANDS" />

Page 25: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

assets/www/

Page 26: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Host JS libraries locally

Page 27: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

config.xml <?xml version='1.0' encoding='utf-8'?> <widget id="com.esri.sample.quickstart.phonegap” version="0.0.1" xmlns=“http://www.w3.org/ns/widgets” xmlns:cdv="http://cordova.apache.org/ns/1.0"> <name>QuickStartCordova</name> <description> Sample application that responds to deviceready event. </description> <author email=”[email protected]" href="http://xyz.io"> My Team </author> <content src="index.html" /> <access origin="*" /> <preference name="fullscreen" value="true" /> <preference name="webviewbounce" value="true" /> </widget>

Page 28: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

package com.esri.sample.quickstart.phonegap; import android.os.Bundle; import org.apache.cordova.*; public class QuickStartCordova extends CordovaActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.init(); // NOTICE: Set by <content src="index.html" /> in config.xml super.loadUrl(Config.getStartUrl()); //super.loadUrl(file:///android_asset/www/+ //”index_basicwebmap.html"); } }

Native wrapper home view

Page 29: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

PhoneGap Life Cycle

Native Application Launched

Native onCreate

Event

Load cordova.js

Page 30: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Application life cycle

1. Native app loads 2. cordova.js loads 3. ArcGIS JS API + CSS loads 4. Cordova “onDeviceReady” Event 5. Load Map 6. Map “load” Event 7. Turn on GPS

Page 31: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

quickstart-map-phonegap

github.com/Esri/quickstart-map-phonegap

Page 32: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Map samples

index_basicmap.html index_basicwebmap.html index_basicgps.html index_jquerymobilegps.html

Page 33: Maps for PhoneGap - s3.amazonaws.com fileCreate native apps for Google Play, App Store . PhoneGap + Android SDK ... Java Project . HTML + Mobile JavaScript . Framework = Native deployment

Andy Gup, Esri U.S. Developer Evangelist [email protected] @agup http://www.andygup.net