@impargo/react-here-maps
Version:
React.js HERE Maps component
120 lines • 11.8 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useRasterLayers = void 0;
var react_1 = require("react");
var get_platform_1 = require("./utils/get-platform");
var languages_1 = require("./utils/languages");
var getBaseLayer = function (_a) {
var apiKey = _a.apiKey, language = _a.language, congestion = _a.congestion, trafficLayer = _a.trafficLayer, hidpi = _a.hidpi;
var lang = (0, languages_1.getTileLanguage)(language);
var platform = (0, get_platform_1.getPlatform)({
apikey: apiKey,
});
var service = platform.getRasterTileService({
format: 'jpeg',
queryParams: __assign({ lang: lang, ppi: hidpi ? 200 : 100, style: trafficLayer ? 'lite.day' : 'logistics.day' }, (congestion
? {
features: 'environmental_zones:all,congestion_zones:all',
}
: {})),
});
var provider = new H.service.rasterTile.Provider(service, { engineType: H.Map.EngineType.HARP });
return new H.map.layer.TileLayer(provider);
};
var getTruckOverlayLayer = function (_a) {
var apiKey = _a.apiKey, language = _a.language, hidpi = _a.hidpi, showActiveAndInactiveTruckRestrictions = _a.showActiveAndInactiveTruckRestrictions;
var lang = (0, languages_1.getTileLanguage)(language);
var platform = (0, get_platform_1.getPlatform)({
apikey: apiKey,
});
var truckOnlyTileService = platform.getRasterTileService({
resource: 'blank',
queryParams: {
features: "vehicle_restrictions:".concat(showActiveAndInactiveTruckRestrictions ? 'active_and_inactive' : 'permanent_only'),
style: 'logistics.day',
lang: lang,
ppi: hidpi ? 200 : 100,
},
});
var truckOverlayProvider = new H.service.rasterTile.Provider(truckOnlyTileService, { engineType: H.Map.EngineType.HARP });
return new H.map.layer.TileLayer(truckOverlayProvider);
};
var useRasterLayers = function (_a) {
var map = _a.map, useSatellite = _a.useSatellite, trafficLayer = _a.trafficLayer, congestion = _a.congestion, truckRestrictions = _a.truckRestrictions, defaultLayers = _a.defaultLayers, apiKey = _a.apiKey, language = _a.language, enableRasterLayers = _a.enableRasterLayers, showActiveAndInactiveTruckRestrictions = _a.showActiveAndInactiveTruckRestrictions, hidpi = _a.hidpi, hideTruckRestrictionsWhenZooming = _a.hideTruckRestrictionsWhenZooming;
var truckOverlayLayer = (0, react_1.useMemo)(function () { return map && getTruckOverlayLayer({
apiKey: apiKey,
language: language,
showActiveAndInactiveTruckRestrictions: showActiveAndInactiveTruckRestrictions,
hidpi: hidpi,
}); }, [apiKey, showActiveAndInactiveTruckRestrictions, language, hidpi, map]);
var baseLayer = (0, react_1.useMemo)(function () { return map && getBaseLayer({
apiKey: apiKey,
language: language,
congestion: congestion,
trafficLayer: trafficLayer,
hidpi: hidpi,
}); }, [apiKey, language, congestion, trafficLayer, hidpi, map]);
(0, react_1.useEffect)(function () {
if (!map || !defaultLayers || !baseLayer || !enableRasterLayers) {
return;
}
var satelliteBaseLayer = defaultLayers === null || defaultLayers === void 0 ? void 0 : defaultLayers.raster.satellite.map;
map.setBaseLayer(useSatellite ? satelliteBaseLayer : baseLayer);
}, [map, useSatellite, defaultLayers, baseLayer, enableRasterLayers]);
(0, react_1.useEffect)(function () {
if (!map || !enableRasterLayers || !truckOverlayLayer || !truckRestrictions) {
return;
}
var syncEventListener = function (e) {
if (e.oldValue.lookAt.zoom !== e.newValue.lookAt.zoom) {
map.removeLayer(truckOverlayLayer);
}
};
var mapViewChangeEndEventListener = function () {
var dataModelLayers = map.getLayers().asArray();
if (dataModelLayers.indexOf(truckOverlayLayer) === -1) {
map.getLayers().add(truckOverlayLayer);
}
};
if (hideTruckRestrictionsWhenZooming) {
// Listen for changes in the view model, i.e. position, zoom level
// Remove the overlay only if the zoom level changes, i.e. during the zoomin/out operation
// In fact, we want the overlay to stay visible during panning operations
map.getViewModel().addEventListener('sync', syncEventListener);
// Listen for the mapviewchangeend event.
// We want to re-add the overlay at the end of the interaction with the map, either panning or zoomin/out.
// Specifically, we re-add the overlay only if the layer is not already present in the layers stack
map.addEventListener('mapviewchangeend', mapViewChangeEndEventListener);
}
map.addLayer(truckOverlayLayer);
return function () {
map.removeLayer(truckOverlayLayer);
map.getViewModel().removeEventListener('sync', syncEventListener);
map.removeEventListener('mapviewchangeend', mapViewChangeEndEventListener);
};
}, [truckRestrictions, map, enableRasterLayers, truckOverlayLayer, hideTruckRestrictionsWhenZooming]);
(0, react_1.useEffect)(function () {
if (!map || !defaultLayers || !enableRasterLayers) {
return;
}
if (trafficLayer) {
map.addLayer(defaultLayers.vector.traffic.logistics);
}
return function () {
map.removeLayer(defaultLayers.vector.traffic.logistics);
};
}, [trafficLayer, map, defaultLayers, enableRasterLayers]);
};
exports.useRasterLayers = useRasterLayers;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUmFzdGVyTGF5ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3VzZVJhc3RlckxheWVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUEwQztBQUcxQyxxREFBa0Q7QUFDbEQsK0NBQW1EO0FBb0JuRCxJQUFNLFlBQVksR0FBRyxVQUFDLEVBTXdFO1FBTDVGLE1BQU0sWUFBQSxFQUNOLFFBQVEsY0FBQSxFQUNSLFVBQVUsZ0JBQUEsRUFDVixZQUFZLGtCQUFBLEVBQ1osS0FBSyxXQUFBO0lBRUwsSUFBTSxJQUFJLEdBQUcsSUFBQSwyQkFBZSxFQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRXRDLElBQU0sUUFBUSxHQUFHLElBQUEsMEJBQVcsRUFBQztRQUMzQixNQUFNLEVBQUUsTUFBTTtLQUNmLENBQUMsQ0FBQTtJQUVGLElBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQztRQUM1QyxNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsYUFDVCxJQUFJLE1BQUEsRUFDSixHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFDdEIsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFlLElBQy9DLENBQUMsVUFBVTtZQUNaLENBQUMsQ0FBQztnQkFDQSxRQUFRLEVBQUUsOENBQThDO2FBQ3pEO1lBQ0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNSO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsSUFBTSxRQUFRLEdBQ1osSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7SUFFbkYsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FB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