2020-10-02 13:35:50 +10:00
|
|
|
import { useEffect, useState } from "react";
|
|
|
|
|
import useImage from "use-image";
|
|
|
|
|
|
|
|
|
|
import useDataSource from "./useDataSource";
|
|
|
|
|
|
|
|
|
|
import { mapSources as defaultMapSources } from "../maps";
|
|
|
|
|
|
|
|
|
|
function useMapImage(map) {
|
2020-12-11 13:24:39 +11:00
|
|
|
const mapSource = useDataSource(map, defaultMapSources);
|
2020-10-02 13:35:50 +10:00
|
|
|
const [mapSourceImage, mapSourceImageStatus] = useImage(mapSource);
|
|
|
|
|
|
|
|
|
|
// Create a map source that only updates when the image is fully loaded
|
|
|
|
|
const [loadedMapSourceImage, setLoadedMapSourceImage] = useState();
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (mapSourceImageStatus === "loaded") {
|
|
|
|
|
setLoadedMapSourceImage(mapSourceImage);
|
|
|
|
|
}
|
|
|
|
|
}, [mapSourceImage, mapSourceImageStatus]);
|
|
|
|
|
|
|
|
|
|
return [loadedMapSourceImage, mapSourceImageStatus];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default useMapImage;
|