building location-aware apps using open source (andevcon sf 2014)

115
Building Location-Aware Apps with Open Source & Open Data Chuck Greb | 11·18·2014 | AnDevCon

Upload: chuck-greb

Post on 13-Jul-2015

286 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Building Location-Aware Appswith Open Source & Open Data

Chuck Greb | 11·18·2014 | AnDevCon

Page 2: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Mapzen is an open source mapping lab building and supporting open data and software to promote a healthy mapping

ecosystem.

Page 3: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

start where you are

Page 4: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Hour 1: Overview

⇢ Location-aware apps

⇢ Open source

⇢ Open data

Hour 2: Rendering

⇢ Raster tiles

⇢ Vector tiles

Hour 3: Search & Navigation

⇢ Location services

⇢ Geocoding

⇢ Routing

Agenda

Page 5: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 6: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 7: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 8: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 9: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 10: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 11: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 12: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 14: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

start where you are

Page 15: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Building Location-Aware Appswith Open Source & Open Data

Page 16: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

3 kinds of location-aware apps

⇢ Mapping applications

⇢ Location-based apps

⇢ Apps with location-aware features

Location-Aware Apps

Page 17: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Mapping applications

Page 18: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 19: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 20: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 21: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Location-based apps

Page 22: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 23: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 24: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 25: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 26: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Apps with location-aware features

Page 27: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 28: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 29: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Common features

⇢ Maps

⇢ Geolocation

⇢ Geocoding

⇢ Reverse geocoding

⇢ Search

⇢ Navigation

Location-Aware Apps

Page 30: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Building Location-Aware Appswith Open Source & Open Data

Page 31: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Philosophy

Open Source

Page 32: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Code

Open Source

Page 33: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

License

Open Source

Page 34: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Community

Open Source

Page 35: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Advantages

⇢ Transparency

⇢ Flexibility

⇢ Compatibility

⇢ Free!

Open Source

Page 36: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Open source is not free like beer

Open Source

Page 37: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Open source is free like a puppy

Open Source

Page 38: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Building Location-Aware Appswith Open Source & Open Data

Page 39: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Availability & Access

Open Data

Page 40: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Reuse & Redistribution

Open Data

Page 41: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Universal participation

Open Data

Page 42: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Open Knowledge Foundationhttps://okfn.org/

Open Data

Page 43: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Building Location-Aware Appswith Open Source & Open Data

Page 44: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Components

Open Location Applications

Page 45: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Datasource

Open Location Applications

Page 46: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Vector Tiles

Open Location Applications

Page 47: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Renderer

Open Location Applications

Page 48: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Location Services

Open Location Applications

GPS, WiFi, Network, Sensors, BLE

Page 49: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Geocoder

Open Location Applications

Page 50: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Search Engine

Open Location Applications

Page 51: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Route Engine

Open Location Applications

Page 52: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

OpenStreetMap (OSM)

Page 53: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

⇢ Crowdsourced Data

⬝ Local knowledge

⬝ Community driven

⇢ Public Data

⬝ 2007 TIGER import

⬝ Manual import process

⇢ Open Data Commons Open Database License (ODbL)

⬝ Attribution

⬝ Share-Alike

⬝ Keep Open

OpenStreetMap (OSM)

Page 54: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 55: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

osmdroid

Page 56: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

2008

osmdroid

Page 57: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Based on Google Maps API v1

osmdroid

Page 58: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Support for online and offline tile source

osmdroid

Page 59: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Icons, tracking, and shapes

osmdroid

Page 60: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 61: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Mapbox

Page 62: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Fork of osmdroid

Mapbox

Page 63: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Easy integration with Mapbox tile server

Mapbox

Page 64: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

<com.mapbox.mapboxsdk.views.MapView

android:id="@+id/mapview"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

mapbox:mapid="Your Mapbox mapid" />

Mapbox

Page 65: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

MapView mapView = new MapView(this, "Your Mapbox mapid");

this.setContentView(mapView);

Mapbox

Page 66: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

(Alternate tile servers also supported)

Mapbox

Page 67: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Custom styles & satellite imagery

Mapbox

Page 68: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 69: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

OpenScienceMap

Page 70: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Universität Bremen

OpenScienceMap

Page 71: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

“OpenScienceMap provides free and open maps for Android with the fastest and 100% pure vector maps around.”

OpenScienceMap

Page 72: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

<org.oscim.android.MapView

android:id="@+id/map"

android:layout_width="match_parent"

android:layout_height="match_parent" />

OpenScienceMap

Page 73: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

public class MyActivity extends MapActivity {

...

public Map getMap() {

return super.map();

}

}

OpenScienceMap

Page 74: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

@Override public void onCreate(Bundle icicle) {

super.onCreate(icicle);

UrlTileSource tileSource = new OSciMap4TileSource("http://vector.example.com/all");

VectorTileLayer baseLayer = getMap().setBaseMap(tileSource);

getMap().layers().add(new BuildingLayer(getMap(), baseLayer));

getMap().layers().add(new PoiLayer(getMap(), baseLayer));

getMap().layers().add(new LabelLayer(getMap(), baseLayer));

baseLayer.setRenderTheme(ThemeLoader.load(

AssetAdapter.g.openFileAsStream("styles/map.xml)")));

}

OpenScienceMap

Page 75: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 76: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Pelias

Page 77: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

modular open-source geocoder

Pelias

Page 78: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

ElasticSearch

Pelias

Page 79: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

OSMGeoanmes

Quattroshapes

Pelias

Page 80: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Pelias Android SDK

Pelias

Page 81: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Pelias.getPelias().suggest("Empire State Build", Callback<Result>);

Pelias.getPelias().search("Empire State Building", "x1,y1,x2,y2", Callback<Result>);

Pelias

Page 82: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

{ "type": "FeatureCollection",

"features": [{

"type": "Feature",

"geometry": {

"type": "Point",

"coordinates": [ -73.98597, 40.74871 ]},

"properties": {

"text": "Empire State Building, New York County, New York",

"score": 1,

"type": "geoname",

"id": "5116597"

}

}, ...

}

Pelias

Page 83: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

On the Road

Page 84: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Routing and Navigation

On the Road

Page 85: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

OSRM

On the Road

Page 86: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Router.getRouter().setEndpoint("http://osrm.example.com")

.setDriving()

.setLocation(new double[]{lat, lng})

.setLocation(new double[]{lat, lng})

.setCallback(new Callback() {

@Override

public void success(Route route) {

// do stuff

}

@Override

public void failure(int statusCode) {

// do stuff

}

}).fetch();

On the Road

Page 87: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Features

⇢ Navigation

⇢ Snap to location

⇢ Calculate distances

⇢ Reroute

On the Road

Page 88: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Location Open Source Tracker(LOST)

Page 89: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Drop-in replacement forFusedLocationProvider

LOST

Page 90: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

talks directly to LocationManager

LOST

Page 91: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

GPSWi-Fi

Cell Network

LOST

Page 92: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

FrequencyAccuracy

Battery Life

LOST

Page 93: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Replay GPX trace file

LOST

Page 94: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

LocationClient locationClient = new LocationClient(context,

new LocationClient.ConnectionCallbacks() {

@Override public void onConnected(Bundle bundle) {

onLocationClientConnected();

}

@Override public void onDisconnected() {

onLocationClientDisconnected();

}

});

LOST

Page 95: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

private void onLocationClientConnected() {

Location lastLocation = locationClient.getLastLocation();

if (lastLocation != null) {

// do stuff

}

LocationRequest locationRequest = LocationRequest.create();

locationRequest.setInterval(5000);

locationClient.requestLocationUpdates(locationRequest,

new LocationListener() {

@Override public void onLocationChanged(Location location) {

// do more stuff

}

});

}

LOST

Page 96: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Speakerbox

Page 97: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Features

⇢ Text-to-Speech

⇢ Initialization/Shutdown

⇢ Mute/Unmute

⇢ Remix!

Speakerbox

Page 98: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 99: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Open by Mapzen

Pelias Android SDK On the Road LOSTOpenScienceMap

VTM Speakerbox

TTSLocationManagerOSRMPelias

MapzenVector Tile

ServiceOpenGL ES

Page 100: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 101: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 102: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 103: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

start where you are

Page 104: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 105: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 106: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)
Page 108: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Break.

Page 109: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

osmdroidExercise #1

Page 110: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

OpenScienceMapExercise #2

Page 111: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

Break.

Page 112: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

OpenScienceMap + LOSTExercise #3

Page 113: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

OpenScienceMap + LOST + PeliasExercise #4

Page 114: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

OpenScienceMap + LOST + Pelias + On the RoadExercise #5

Page 115: Building Location-Aware Apps using Open Source (AnDevCon SF 2014)

thanksChuck Greb | @ecgreb

github.com/mapzen