Files
grungnet/src/components/map/MapGrid.js

42 lines
1.2 KiB
JavaScript
Raw Normal View History

import React, { useEffect, useState } from "react";
2020-05-31 16:25:05 +10:00
import useImage from "use-image";
import useDataSource from "../../hooks/useDataSource";
2020-05-31 16:25:05 +10:00
import { mapSources as defaultMapSources } from "../../maps";
2020-07-13 17:44:22 +10:00
import { getImageLightness } from "../../helpers/image";
2020-05-31 16:25:05 +10:00
import Grid from "../Grid";
function MapGrid({ map, strokeWidth }) {
let mapSourceMap = map;
// Use lowest resolution for grid lightness
if (map && map.type === "file" && map.resolutions) {
const resolutionArray = Object.keys(map.resolutions);
if (resolutionArray.length > 0) {
mapSourceMap = map.resolutions[resolutionArray[0]];
}
}
const mapSource = useDataSource(mapSourceMap, defaultMapSources);
2020-05-31 16:25:05 +10:00
const [mapImage, mapLoadingStatus] = useImage(mapSource);
2020-10-09 12:57:48 +11:00
const [isImageLight, setIsImageLight] = useState(true);
// When the map changes find the average lightness of its pixels
useEffect(() => {
if (mapLoadingStatus === "loaded") {
setIsImageLight(getImageLightness(mapImage));
}
}, [mapImage, mapLoadingStatus]);
return (
<Grid strokeWidth={strokeWidth} stroke={isImageLight ? "black" : "white"} />
);
2020-05-31 16:25:05 +10:00
}
MapGrid.defaultProps = {
strokeWidth: 0.1,
};
2020-05-31 16:25:05 +10:00
export default MapGrid;