wix-style-react
Version:
103 lines (93 loc) • 3.11 kB
JavaScript
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _createClass from "@babel/runtime/helpers/createClass";
var GoogleMapsClient = /*#__PURE__*/function () {
function GoogleMapsClient() {
_classCallCheck(this, GoogleMapsClient);
this._autocomplete = new window.google.maps.places.AutocompleteService();
this._geocoder = new window.google.maps.Geocoder();
var map = new window.google.maps.Map(document.createElement('div'));
this._placesServices = new window.google.maps.places.PlacesService(map);
this._sessionToken = new window.google.maps.places.AutocompleteSessionToken();
}
_createClass(GoogleMapsClient, [{
key: "autocomplete",
value: function autocomplete(_ref) {
var _this = this;
var request = _ref.request;
return new Promise(function (resolve, reject) {
try {
if (_this._sessionToken) {
request.sessionToken = _this._sessionToken;
}
_this._autocomplete.getPlacePredictions(request, function (results, status) {
if (status !== window.google.maps.GeocoderStatus.OK && status !== window.google.maps.GeocoderStatus.ZERO_RESULTS) {
reject({
code: 'internal'
});
} else {
resolve(results || []);
}
});
} catch (e) {
reject({
code: 'internal',
message: e.message
});
}
});
}
}, {
key: "geocode",
value: function geocode(_ref2) {
var _this2 = this;
var request = _ref2.request;
return new Promise(function (resolve, reject) {
try {
_this2._geocoder.geocode(request, function (results, status) {
if (status !== window.google.maps.GeocoderStatus.OK && status !== window.google.maps.GeocoderStatus.ZERO_RESULTS) {
reject({
code: 'internal'
});
} else {
resolve(results || []);
}
});
} catch (e) {
reject({
code: 'internal',
message: e.message
});
}
});
}
}, {
key: "placeDetails",
value: function placeDetails(_ref3) {
var _this3 = this;
var request = _ref3.request;
return new Promise(function (resolve, reject) {
try {
if (_this3._sessionToken) {
request.sessionToken = _this3._sessionToken;
}
_this3._placesServices.getDetails(request, function (result, status) {
if (status !== window.google.maps.places.PlacesServiceStatus.OK && status !== window.google.maps.places.PlacesServiceStatus.ZERO_RESULTS) {
reject({
code: 'internal'
});
} else {
resolve(result || undefined);
}
});
} catch (e) {
reject({
code: 'internal',
message: e.message
});
}
});
}
}]);
return GoogleMapsClient;
}();
export default GoogleMapsClient;