Map Render
The MapRender
component is needed to enable all the Maps
features in Crono
.
The component is responsible for selecting the vector or raster map tile and for automating the process of a new Map
initialization.
Install:
import { MapRender } from "@matchplat/crono";
<MapRender />;
Props
The available props
for the component are:
export interface MapRenderProps {
/** @param {center?: LngLatLike | undefined, zoom?: number | undefined, bounds?: LngLatBoundsLike | undefined}} [defaultValues] set default values for the map */
defaultValues?: {
center?: LngLatLike | undefined;
zoom?: number | undefined;
bounds?: LngLatBoundsLike | undefined;
};
/** @param {string} [height] height of the map container */
height?: string;
/** @param {string} [width] width of the map container */
width?: string;
/** @param {object} [styles] react CSS styles */
styles?: CSSProperties | undefined;
/** @param {GetMapInfo} [getMapInfo] get zoom and bounds from the map */
getMapInfo?: GetMapInfo;
/** @param {boolean} [centerClickedMarker] center the Map on the clicked Marker with animation */
centerClickedMarker?: boolean;
/** @param {string | StyleSpecification} [mapTile] set map Tile for server styles */
mapTile?: string | StyleSpecification;
/** @param {LngLatLike} [mapCenter] set map center */
setMapCenter?: LngLatLike;
/** @param {number} [mapZoom] set the zoom of the map */
setMapZoom?: number;
/** @param {LngLatBoundsLike | undefined} [setMapBounds] set the boundigs box of the map */
setMapBounds?: LngLatBoundsLike | undefined;
/** @param {boolean} [canFullScreen] if you want to disable the full screen button */
canFullScreen?: boolean;
/** @param {GeoJson} [geoJson] set the Markers on the map */
geoJson?: GeoJson;
/** @param {GeoJsonModeSelectionType} [geoJsonModeSelection] select layers of data */
geoJsonModeSelection?: GeoJsonModeSelectionType;
/** @param {'green' | 'blue' | 'red'} [heatmapPalette] select a palette for the heatmap */
heatmapPalette?: Palette;
/** @param {activateControls: boolean, activeColor: CronoColor, inactiveColor: CronoColor, activateSave} [isDraw] draw controls */
setPolygon?: {
activateControls: boolean;
activeColor?: CronoColor;
inactiveColor?: CronoColor;
activateSave?: boolean;
};
/** @param {{center: {lng: number, lat: number}, radius: number, color: CronoColor}} [setCircle] create a Circle layer on the map */
setCircle?: {
center: { lng: number; lat: number };
radius: number;
color?: CronoColor;
};
/** @param {{coordinates: { lng: number, lat: number } | undefined, width?: string, height?: string}} [streetViewData] activate and set Street View */
streetViewData?: {
activateControls: boolean;
coordinates: { lng: number; lat: number } | undefined;
width?: string;
height?: string;
};
/** @param {{ activateControl: boolean }} [heatClusterToggle] show controls to switch between heatmap and clusters */
heatClusterToggle?: {
activateControl: boolean;
onToggleCluster: OnToggleCluster;
};
/** @param {boolean} [disableStyleSwitcher] disable the Style Switcher control */
disableStyleSwitcher?: boolean;
/** @param {boolean} [isLoading] map is loading data */
isLoading?: boolean;
}
geoJson
The geoJson props is needed to work with markers and layers, like the heatmap.
It's a standardized "json kind" data structure used to work with maps
on the web.
Crono's geoJson
structure:
type GeoJson = {
type: string;
features: {
type: string;
properties: {
id: string;
size?: { width: string; height: string };
fillColor?: string;
icons?: { people: boolean; like: boolean };
Tooltip?: { tooltip: JSX.Element; html?: string };
tooltipOffset?: number;
count: number;
};
geometry: {
type: string;
coordinates: [number, number];
};
}[];
};
Marker's type
A single marker
is:
type GeoJsonMarker = {
type: string;
properties: {
id: string;
size?: { width: string; height: string };
fillColor?: string;
icons?: { people: boolean; like: boolean };
Tooltip?: { tooltip: JSX.Element; html?: string };
tooltipOffset?: number;
count: number;
};
geometry: {
type: string;
coordinates: [number, number];
};
};
geoJsonModeSelection
You can choose between different kinds of rendering for the geoJson
file.
Actually Pointers
or Heatmap
are available for rendering.
Markers and Clusters
Check the Markers doc
Heatmap
Check the Heatmap doc