blob: 392dd7fcf984e39c99eae828ea479c6cbc940626 [file] [log] [blame]
#!mojo mojo:js_content_handler
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Demonstrate a Mojo wrapper for the Geocoder JSON API. The application
// connects to geocoder_service.js which implements geocoder.mojom.
// To run this application with mojo_shell, set DIR to be the absolute path
// for this directory, then:
// mojo_shell file://$DIR/demo.js
define("main", [
"console",
"mojo/public/js/core",
"mojo/public/js/unicode",
"mojo/services/location/interfaces/geocoder.mojom",
"mojo/services/location/interfaces/location.mojom",
"mojo/services/public/js/application",
"third_party/js/url",
], function(console, core, unicode, geocoder, location, application, url) {
const Application = application.Application;
const Geocoder = geocoder.Geocoder;
const Result = geocoder.Result;
const Location = location.Location;
const Status = geocoder.Status;
const Options = geocoder.Options;
const URL = url.URL;
var geocoderService;
function demoAddressToLocation() {
console.log("Demo GeocoderServce.AddressToLocation()");
var addr = "1365 Shorebird way, Mountain View, CA";
geocoderService.addressToLocation(addr, new Options).then(
function(rv) {
if (rv.status == Status.OK) {
for (var i = 0; i < rv.results.length; i++) {
var address = rv.results[i].formatted_address;
var location = rv.results[i].geometry.location;
console.log("Latitude,longitude for \"" + address + "\":");
console.log(location.latitude + ", " + location.longitude);
console.log("");
demoLocationToAddress();
}
} else {
console.log("Geocoder request failed status=" + rv.status);
}
});
}
function demoLocationToAddress() {
console.log("Demo GeocoderServce.LocationToAddress()");
var coords = new Location({
latitude: 37.41811752319336,
longitude: -122.07335662841797,
});
geocoderService.locationToAddress(coords, new Options).then(
function(rv) {
if (rv.status == Status.OK) {
for (var i = 0; i < rv.results.length; i++) {
var address = rv.results[i].formatted_address;
var location = rv.results[i].geometry.location;
console.log("Latitude,longitude for \"" + address + "\":");
console.log(location.latitude + ", " + location.longitude);
}
} else {
console.log("Geocoder request failed status=" + rv.status);
}
});
}
class Demo extends Application {
initialize() {
// TODO(alhaad): See if there is a better way to do this.
var geocoderURL = new URL(this.url).resolve(
"../../services/location/geocoder_service.js");
geocoderService = this.shell.connectToService(geocoderURL, Geocoder);
demoAddressToLocation();
}
}
return Demo;
});