Index: examples/js/maps/geocoder_service.js |
diff --git a/examples/js/maps/geocoder_service.js b/examples/js/maps/geocoder_service.js |
deleted file mode 100644 |
index 351a4606dfa894448880934268352da78256ad85..0000000000000000000000000000000000000000 |
--- a/examples/js/maps/geocoder_service.js |
+++ /dev/null |
@@ -1,128 +0,0 @@ |
-#!mojo mojo:js_content_handler |
- |
-define("main", [ |
- "console", |
- "examples/js/maps/geocoder.mojom", |
- "mojo/public/js/core", |
- "mojo/public/js/unicode", |
- "mojo/services/public/js/application", |
- "mojo/services/network/public/interfaces/network_service.mojom", |
- "mojo/services/network/public/interfaces/url_loader.mojom", |
- "third_party/js/url", |
-], function(console, geocoder, core, unicode, application, network, loader, url) { |
- |
- const Application = application.Application; |
- const Bounds = geocoder.Bounds; |
- const Geocoder = geocoder.Geocoder; |
- const Geometry = geocoder.Geometry; |
- const Location = geocoder.Location; |
- const NetworkService = network.NetworkService; |
- const Result = geocoder.Result; |
- const Status = geocoder.Status; |
- const URLRequest = loader.URLRequest; |
- const URL = url.URL; |
- |
- var netService; |
- |
- Location.prototype.queryString = function() { |
- // TBD: format floats to 6 decimal places |
- return this.latitude + ", " + this.longitude; |
- } |
- |
- Location.fromJSON = function(json) { |
- return !json ? null : new Location({ |
- latitude: json.lat, |
- longitude: json.lng, |
- }); |
- } |
- |
- Bounds.fromJSON = function(json) { |
- return !json ? null : new Bounds({ |
- northeast: Location.fromJSON(json.northeast), |
- southwest: Location.fromJSON(json.southwest), |
- }); |
- } |
- |
- Geometry.fromJSON = function(json) { |
- return !json ? null : new Geometry({ |
- location: Location.fromJSON(json.location), |
- location_type: json.location_type, |
- viewport: Bounds.fromJSON(json.viewport), |
- bounds: Bounds.fromJSON(json.bounds), |
- }); |
- } |
- |
- Result.fromJSON = function(json) { |
- return !json ? null : new Result({ |
- partial_match: !!json.partial_match, |
- formatted_address: json.formatted_address, |
- geometry: Geometry.fromJSON(json.geometry), |
- types: json.types, |
- // TBD: address_components |
- }); |
- } |
- |
- function parseGeocodeResponse(arrayBuffer) { |
- return JSON.parse(unicode.decodeUtf8String(new Uint8Array(arrayBuffer))); |
- } |
- |
- function geocodeRequest(url) { |
- return new Promise(function(resolveRequest) { |
- var urlLoader; |
- netService.createURLLoader(function(urlLoaderProxy) { |
- urlLoader = urlLoaderProxy; |
- }); |
- |
- var urlRequest = new URLRequest({ |
- url: url.format(), |
- method: "GET", |
- auto_follow_redirects: true |
- }); |
- |
- urlLoader.start(urlRequest).then(function(urlLoaderResult) { |
- core.drainData(urlLoaderResult.response.body).then( |
- function(drainDataResult) { |
- // TBD: handle drainData failure |
- var value = parseGeocodeResponse(drainDataResult.buffer); |
- resolveRequest({ |
- status: value.status, |
- results: value.results.map(Result.fromJSON), |
- }); |
- }); |
- }); |
- }); |
- } |
- |
- function geocodeURL(key, value, options) { |
- var url = new URL("https://maps.googleapis.com/maps/api/geocode/json"); |
- url.query = {}; |
- url.query[key] = value; |
- // TBD: add options url.query |
- return url; |
- } |
- |
- class GeocoderImpl { |
- addressToLocation(address, options) { |
- return geocodeRequest(geocodeURL("address", address, options)); |
- } |
- |
- locationToAddress(location, options) { |
- return geocodeRequest( |
- geocodeURL("latlng", location.queryString(), options)); |
- } |
- } |
- |
- class GeocoderService extends Application { |
- initialize() { |
- netService = this.shell.connectToService( |
- "mojo:network_service", NetworkService); |
- } |
- |
- acceptConnection(initiatorURL, serviceProvider) { |
- serviceProvider.provideService(Geocoder, GeocoderImpl); |
- } |
- } |
- |
- return GeocoderService; |
-}); |
- |