devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
150 lines (149 loc) • 5.34 kB
JavaScript
/**
* DevExtreme (esm/ui/map/provider.js)
* Version: 21.1.4
* Build date: Mon Jun 21 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import Promise from "../../core/polyfills/promise";
import Class from "../../core/class";
import {
map
} from "../../core/utils/iterator";
import {
isPlainObject,
isNumeric
} from "../../core/utils/type";
import {
addNamespace
} from "../../events/utils/index";
var abstract = Class.abstract;
var Provider = Class.inherit({
_defaultRouteWeight: function() {
return 5
},
_defaultRouteOpacity: function() {
return .5
},
_defaultRouteColor: function() {
return "#0000FF"
},
ctor: function(map, $container) {
this._mapWidget = map;
this._$container = $container
},
render: function(markerOptions, routeOptions) {
return this._renderImpl().then(function() {
return Promise.all([this._applyFunctionIfNeeded("addMarkers", markerOptions), this._applyFunctionIfNeeded("addRoutes", routeOptions)]).then((function() {
return true
}))
}.bind(this))
},
_renderImpl: abstract,
updateDimensions: abstract,
updateMapType: abstract,
updateBounds: abstract,
updateCenter: abstract,
updateZoom: abstract,
updateControls: abstract,
updateMarkers: function(markerOptionsToRemove, markerOptionsToAdd) {
return new Promise(function(resolve) {
return this._applyFunctionIfNeeded("removeMarkers", markerOptionsToRemove).then(function(removeValue) {
this._applyFunctionIfNeeded("addMarkers", markerOptionsToAdd).then((function(addValue) {
resolve(addValue ? addValue : removeValue)
}))
}.bind(this))
}.bind(this))
},
addMarkers: abstract,
removeMarkers: abstract,
adjustViewport: abstract,
updateRoutes: function(routeOptionsToRemove, routeOptionsToAdd) {
return new Promise(function(resolve) {
return this._applyFunctionIfNeeded("removeRoutes", routeOptionsToRemove).then(function(removeValue) {
this._applyFunctionIfNeeded("addRoutes", routeOptionsToAdd).then((function(addValue) {
resolve(addValue ? addValue : removeValue)
}))
}.bind(this))
}.bind(this))
},
addRoutes: abstract,
removeRoutes: abstract,
clean: abstract,
map: function() {
return this._map
},
isEventsCanceled: function() {
return false
},
_option: function(name, value) {
if (void 0 === value) {
return this._mapWidget.option(name)
}
this._mapWidget.setOptionSilent(name, value)
},
_keyOption: function(providerName) {
var key = this._option("apiKey");
return void 0 === key[providerName] ? key : key[providerName]
},
_parseTooltipOptions: function(option) {
return {
text: option.text || option,
visible: option.isShown || false
}
},
_getLatLng: function(location) {
if ("string" === typeof location) {
var coords = map(location.split(","), (function(item) {
return item.trim()
}));
var numericRegex = /^[-+]?[0-9]*\.?[0-9]*$/;
if (2 === coords.length && coords[0].match(numericRegex) && coords[1].match(numericRegex)) {
return {
lat: parseFloat(coords[0]),
lng: parseFloat(coords[1])
}
}
} else if (Array.isArray(location) && 2 === location.length) {
return {
lat: location[0],
lng: location[1]
}
} else if (isPlainObject(location) && isNumeric(location.lat) && isNumeric(location.lng)) {
return location
}
return null
},
_areBoundsSet: function() {
return this._option("bounds.northEast") && this._option("bounds.southWest")
},
_addEventNamespace: function(name) {
return addNamespace(name, this._mapWidget.NAME)
},
_applyFunctionIfNeeded: function(fnName, array) {
if (!array.length) {
return Promise.resolve()
}
return this[fnName](array)
},
_fireAction: function(name, actionArguments) {
this._mapWidget._createActionByOption(name)(actionArguments)
},
_fireClickAction: function(actionArguments) {
this._fireAction("onClick", actionArguments)
},
_fireMarkerAddedAction: function(actionArguments) {
this._fireAction("onMarkerAdded", actionArguments)
},
_fireMarkerRemovedAction: function(actionArguments) {
this._fireAction("onMarkerRemoved", actionArguments)
},
_fireRouteAddedAction: function(actionArguments) {
this._fireAction("onRouteAdded", actionArguments)
},
_fireRouteRemovedAction: function(actionArguments) {
this._fireAction("onRouteRemoved", actionArguments)
}
});
export default Provider;