UNPKG

@impargo/react-here-maps

Version:
120 lines 11.8 kB
"use strict"; 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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