Skip to content

Instantly share code, notes, and snippets.

@sunnygleason
Last active March 13, 2017 20:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sunnygleason/e764198d603cac428a6ffcd7c4f625c7 to your computer and use it in GitHub Desktop.
Save sunnygleason/e764198d603cac428a6ffcd7c4f625c7 to your computer and use it in GitHub Desktop.
PubNub Geocoding UI w/ ESRI
<!DOCTYPE html>
<html>
<head>
<title>Angular 2</title>
<script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script>
<script src="https://unpkg.com/zone.js@0.7.2/dist/zone.js"></script>
<script src="https://unpkg.com/reflect-metadata@0.1.9/Reflect.js"></script>
<script src="https://unpkg.com/rxjs@5.0.1/bundles/Rx.js"></script>
<script src="https://unpkg.com/@angular/core/bundles/core.umd.js"></script>
<script src="https://unpkg.com/@angular/common/bundles/common.umd.js"></script>
<script src="https://unpkg.com/@angular/compiler/bundles/compiler.umd.js"></script>
<script src="https://unpkg.com/@angular/platform-browser/bundles/platform-browser.umd.js"></script>
<script src="https://unpkg.com/@angular/forms/bundles/forms.umd.js"></script>
<script src="https://unpkg.com/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js"></script>
<script src="https://unpkg.com/@angular/http/bundles/http.umd.js"></script>
<script src="https://unpkg.com/pubnub@4.3.3/dist/web/pubnub.js"></script>
<script src="https://unpkg.com/pubnub-angular2@1.0.0-beta.8/dist/pubnub-angular2.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" />
</head>
<body>
<main-component>
Loading...
</main-component>
<script>
var app = window.app = {};
app.main_component = ng.core.Component({
selector: 'main-component',
template: `
<div class="container">
<pre>
NOTE: make sure to update the PubNub keys below with your keys,
and ensure that the BLOCK settings are configured properly!
</pre>
<h3>MyApp Geo Integration</h3>
<hr/>
<input type="text" [(ngModel)]="toSend" />
<button class="btn btn-primary" (click)="publish()">Lookup Locations!</button>
<br/>
<h4 *ngIf="orig_query">Query: {{orig_query}}</h4>
<ol>
<li *ngFor="let item of geo_response">
{{item.attributes.Loc_name}} ({{item.attributes.Type}}, score={{item.score}})
<br />
{{item.address}}
<br />
lat={{item.attributes.X}}, lng={{item.attributes.Y}}
</li>
</ol>
</div>`
}).Class({
constructor: [PubNubAngular, ng.http.Http, function(pubnubService, http){
var self = this;
self.pubnubService = pubnubService;
self.channelName = 'esri_geocode_input';
self.toSend = "";
self.geo_response = null;
self.orig_query = null;
pubnubService.init({
publishKey: 'YOUR_PUB_KEY',
subscribeKey: 'YOUR_SUB_KEY',
ssl:true
});
pubnubService.subscribe({channels: [self.channelName], triggerEvents: true});
pubnubService.getMessage(this.channelName,function(msg){
self.orig_query = msg.message.text;
self.geo_response = msg.message.geocode.candidates;
});
}],
publish: function(){
this.pubnubService.publish({channel: this.channelName,message:{text:this.toSend}});
this.toSend = "";
}
});
app.main_module = ng.core.NgModule({
imports: [ng.platformBrowser.BrowserModule, ng.forms.FormsModule, ng.http.HttpModule],
declarations: [app.main_component],
providers: [PubNubAngular],
bootstrap: [app.main_component]
}).Class({
constructor: function(){}
});
document.addEventListener('DOMContentLoaded', function(){
ng.platformBrowserDynamic.platformBrowserDynamic().bootstrapModule(app.main_module);
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment