UNPKG

@impargo/react-here-maps

Version:
214 lines 20.1 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.HEREMap = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); require("./bundle"); var lodash_1 = require("lodash"); var react_1 = require("react"); var context_1 = require("./context"); var useLegacyRasterLayers_1 = require("./useLegacyRasterLayers"); var useRasterLayers_1 = require("./useRasterLayers"); var useVectorLayers_1 = require("./useVectorLayers"); var get_platform_1 = require("./utils/get-platform"); var languages_1 = require("./utils/languages"); exports.HEREMap = (0, react_1.forwardRef)(function (_a, ref) { var children = _a.children, center = _a.center, hidpi = _a.hidpi, _b = _a.interactive, interactive = _b === void 0 ? true : _b, zoom = _a.zoom, useSatellite = _a.useSatellite, trafficLayer = _a.trafficLayer, onMapAvailable = _a.onMapAvailable, disableMapSettings = _a.disableMapSettings, _c = _a.language, language = _c === void 0 ? 'en' : _c, congestion = _a.congestion, truckRestrictions = _a.truckRestrictions, showActiveAndInactiveTruckRestrictions = _a.showActiveAndInactiveTruckRestrictions, hideTruckRestrictionsWhenZooming = _a.hideTruckRestrictionsWhenZooming, apiKey = _a.apiKey, animateZoom = _a.animateZoom, animateCenter = _a.animateCenter, useVectorTiles = _a.useVectorTiles, _d = _a.engineType, engineType = _d === void 0 ? H.Map.EngineType.HARP : _d; if (engineType === H.Map.EngineType.WEBGL) { throw new Error('WEBGL Engine is not supported.'); } if (engineType !== H.Map.EngineType.HARP && useVectorTiles) { throw new Error('Vector tiles can only be used with the HARP engine.'); } var uniqueIdRef = (0, react_1.useRef)((0, lodash_1.uniqueId)()); var _e = (0, react_1.useState)(null), map = _e[0], setMap = _e[1]; var _f = (0, react_1.useState)(null), routesGroup = _f[0], setRoutesGroup = _f[1]; var markersGroupsRef = (0, react_1.useRef)({}); var defaultLayersRef = (0, react_1.useRef)(null); (0, useVectorLayers_1.useVectorLayers)({ congestion: congestion, defaultLayers: defaultLayersRef.current, map: map, trafficLayer: trafficLayer, truckRestrictions: truckRestrictions, useSatellite: useSatellite, enableVectorLayers: useVectorTiles, }); (0, useRasterLayers_1.useRasterLayers)({ apiKey: apiKey, congestion: congestion, defaultLayers: defaultLayersRef.current, language: language, map: map, trafficLayer: trafficLayer, truckRestrictions: truckRestrictions, showActiveAndInactiveTruckRestrictions: showActiveAndInactiveTruckRestrictions, useSatellite: useSatellite, enableRasterLayers: !useVectorTiles && engineType === H.Map.EngineType.HARP, hidpi: hidpi, hideTruckRestrictionsWhenZooming: hideTruckRestrictionsWhenZooming, }); (0, useLegacyRasterLayers_1.useLegacyRasterLayers)({ apiKey: apiKey, congestion: congestion, defaultLayers: defaultLayersRef.current, language: language, map: map, trafficLayer: trafficLayer, truckRestrictions: truckRestrictions, useSatellite: useSatellite, enableRasterLayers: !useVectorTiles && engineType === H.Map.EngineType.P2D, hidpi: hidpi, }); var unmountedRef = (0, react_1.useRef)(false); var screenToGeo = function (x, y) { return map.screenToGeo(x, y); }; var zoomOnMarkersGroup = function (markersGroup, animate) { if (animate === void 0) { animate = true; } var DISTANCE_FACTOR = 0.1; var BEARING_TOP_LEFT = 315; var BEARING_BOTTOM_RIGHT = 135; var boundingBox = markersGroup.getBoundingBox(); var topLeft = boundingBox.getTopLeft(); var bottomRight = boundingBox.getBottomRight(); var distance = topLeft.distance(bottomRight) * DISTANCE_FACTOR; var viewBounds = H.geo.Rect.fromPoints(topLeft.walk(BEARING_TOP_LEFT, distance), bottomRight.walk(BEARING_BOTTOM_RIGHT, distance)); if (viewBounds) { map.getViewModel().setLookAtData({ bounds: viewBounds }, animate, true); } }; var zoomOnMarkers = function (animate, group) { if (animate === void 0) { animate = true; } if (group === void 0) { group = 'default'; } if (map) { if (!markersGroupsRef.current[group]) { return; } zoomOnMarkersGroup(markersGroupsRef.current[group], animate); } }; var zoomOnMarkersSet = function (markersSet, animate) { if (animate === void 0) { animate = true; } var markersGroupSet = new H.map.Group(); markersSet.map(function (m) { return markersGroupSet.addObject(m); }); zoomOnMarkersGroup(markersGroupSet, animate); }; var addToMarkerGroup = function (marker, group) { if (!markersGroupsRef.current[group]) { markersGroupsRef.current[group] = new H.map.Group(); map.addObject(markersGroupsRef.current[group]); } markersGroupsRef.current[group].addObject(marker); }; var removeFromMarkerGroup = function (marker, group) { if (markersGroupsRef.current[group]) { markersGroupsRef.current[group].removeObject(marker); if (markersGroupsRef.current[group].getObjects().length === 0) { if (map.getObjects().length > 0) { map.removeObject(markersGroupsRef.current[group]); } markersGroupsRef.current[group] = null; } } }; (0, react_1.useImperativeHandle)(ref, function () { return { addToMarkerGroup: addToMarkerGroup, getElement: function () { return document.querySelector("#map-container-".concat(uniqueIdRef.current)); }, getMap: function () { return map; }, removeFromMarkerGroup: removeFromMarkerGroup, screenToGeo: screenToGeo, setCenter: function (point) { map.setCenter(point, animateCenter); }, setZoom: function (newZoom) { map.setZoom(newZoom, animateZoom); }, zoomOnMarkers: zoomOnMarkers, zoomOnMarkersSet: zoomOnMarkersSet, }; }, [map]); (0, react_1.useEffect)(function () { if (unmountedRef.current) { return; } // get the platform to base the maps on var platform = (0, get_platform_1.getPlatform)({ apikey: apiKey, }); var ppi = engineType === H.Map.EngineType.P2D ? hidpi ? 320 : 72 : undefined; defaultLayersRef.current = platform.createDefaultLayers({ lg: (0, languages_1.getTileLanguage)(language), engineType: engineType, ppi: ppi, }); var hereMapEl = document.querySelector("#map-container-".concat(uniqueIdRef.current)); var baseLayer = useVectorTiles ? defaultLayersRef.current.vector.normal.logistics : defaultLayersRef.current.raster.normal.map; var newMap = new H.Map(hereMapEl, baseLayer, { center: center, engineType: engineType, zoom: zoom, }); var routesProvider = new H.map.provider.LocalObjectProvider(); var routesLayer = new H.map.layer.ObjectLayer(routesProvider); newMap.addLayer(routesLayer); var ui; // make the map interactive // MapEvents enables the event system // Behavior implements default interactions for pan/zoom var behavior = interactive ? new H.mapevents.Behavior(new H.mapevents.MapEvents(newMap)) : undefined; if (behavior) { behavior.disable(H.mapevents.Behavior.Feature.FRACTIONAL_ZOOM); // create the default UI for the map ui = H.ui.UI.createDefault(newMap, defaultLayersRef.current, (0, languages_1.getUILanguage)(language)); if (disableMapSettings) { ui.removeControl('mapsettings'); } } setMap(newMap); setRoutesGroup(routesProvider.getRootGroup()); onMapAvailable === null || onMapAvailable === void 0 ? void 0 : onMapAvailable({ behavior: behavior, map: newMap, markersGroups: markersGroupsRef.current, routesGroup: routesProvider.getRootGroup(), trafficLayer: trafficLayer, ui: ui, }); return function () { unmountedRef.current = true; map === null || map === void 0 ? void 0 : map.dispose(); }; }, []); (0, react_1.useEffect)(function () { if (map) { var resizeMap = function () { map.getViewPort().resize(); }; var debouncedResizeMap_1 = (0, lodash_1.debounce)(resizeMap, 200); // make the map resize when the window gets resized window.addEventListener('resize', debouncedResizeMap_1); return function () { window.removeEventListener('resize', debouncedResizeMap_1); }; } }, [map]); return ((0, jsx_runtime_1.jsx)("div", __assign({ className: "heremap", style: { height: '100%' } }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ className: "map-container", id: "map-container-".concat(uniqueIdRef.current), style: { height: '100%' } }, { children: map && (0, jsx_runtime_1.jsx)(context_1.HEREMapContext.Provider, __assign({ value: { map: map, routesGroup: routesGroup, removeFromMarkerGroup: removeFromMarkerGroup, addToMarkerGroup: addToMarkerGroup } }, { children: children })) })) }))); }); exports.default = exports.HEREMap; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSEVSRU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9IRVJFTWFwLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBaUI7QUFFakIsaUNBQTJDO0FBQzNDLCtCQUEyRjtBQUUzRixxQ0FBMEM7QUFFMUMsaUVBQStEO0FBQy9ELHFEQUFtRDtBQUNuRCxxREFBbUQ7QUFDbkQscURBQWtEO0FBQ2xELCtDQUFrRTtBQXFFckQsUUFBQSxPQUFPLEdBQUcsSUFBQSxrQkFBVSxFQUEyQixVQUFDLEVBb0I1RCxFQUFFLEdBQUc7UUFuQkosUUFBUSxjQUFBLEVBQ1IsTUFBTSxZQUFBLEVBQ04sS0FBSyxXQUFBLEVBQ0wsbUJBQWtCLEVBQWxCLFdBQVcsbUJBQUcsSUFBSSxLQUFBLEVBQ2xCLElBQUksVUFBQSxFQUNKLFlBQVksa0JBQUEsRUFDWixZQUFZLGtCQUFBLEVBQ1osY0FBYyxvQkFBQSxFQUNkLGtCQUFrQix3QkFBQSxFQUNsQixnQkFBZSxFQUFmLFFBQVEsbUJBQUcsSUFBSSxLQUFBLEVBQ2YsVUFBVSxnQkFBQSxFQUNWLGlCQUFpQix1QkFBQSxFQUNqQixzQ0FBc0MsNENBQUEsRUFDdEMsZ0NBQWdDLHNDQUFBLEVBQ2hDLE1BQU0sWUFBQSxFQUNOLFdBQVcsaUJBQUEsRUFDWCxhQUFhLG1CQUFBLEVBQ2IsY0FBYyxvQkFBQSxFQUNkLGtCQUFrQyxFQUFsQyxVQUFVLG1CQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksS0FBQTtJQUVsQyxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7UUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO0tBQ2xEO0lBRUQsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLGNBQWMsRUFBRTtRQUMxRCxNQUFNLElB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