UNPKG

@fabrix/generics-google-maps

Version:

Generic: Google Maps adapter for Spool-generics

94 lines (93 loc) 3.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const spool_generics_1 = require("@fabrix/spool-generics"); const googleMaps = require("@google/maps"); class GoogleMapsGeneric extends spool_generics_1.Generic { googleMaps() { return googleMaps.createClient({ key: this.config.key, Promise: Promise }); } addressToString(address) { let street = ''; let city = ''; let postalCode = ''; let province = ''; let country = ''; if (address.address_1) { street = address.address_1; } if (address.address_2) { street = `${street} ${address.address_2}`; } if (address.address_3) { street = `${street} ${address.address_3}`; } if (address.company) { street = `${street} ${address.company}`; } if (street !== '') { street = `${street}, `; } if (address.city) { city = address.city; } if (city !== '') { city = `${city} `; } if (address.postal_code) { postalCode = address.postal_code; } if (postalCode !== '') { postalCode = `${postalCode} `; } if (address.province_code || address.province) { if (address.province_code) { province = `${address.province_code}`; } else { province = `${address.province}`; } } if (address.country_code || address.country) { if (address.country_code) { country = `${address.country_code}`; } else { country = `${address.country}`; } } if (province !== '' && country !== '') { province = `${province}, `; country = `${country}`; } return `${street}${city}${province}${postalCode}${country}`; } locate(address) { const formattedAddress = this.addressToString(address); return this.googleMaps().geocode({ address: formattedAddress }) .asPromise() .then((response) => { console.log('BROKE', response.json.results); const proxySchema = address; if (response.json && response.json.results.length > 0) { proxySchema.formatted_address = response.json.results[0].formatted_address || formattedAddress; if (response.json.results[0].geometry && response.json.results[0].geometry.location) { proxySchema.latitude = response.json.results[0].geometry.location.lat; proxySchema.longitude = response.json.results[0].geometry.location.lng; } proxySchema.google_maps = response.json.results; } else { proxySchema.formatted_address = formattedAddress; proxySchema.latitude = 0; proxySchema.longitude = 0; } return proxySchema; }); } } exports.GoogleMapsGeneric = GoogleMapsGeneric;