Skip to main content
deleted 29 characters in body
Source Link

I need help please. I would like to hide the other maps and only show the one of Cameroon. I'm using Leaflet and I'm on Next.js to be able to display the map. I saw this page https://stackoverflow.com/questions/77978480/react-leaflet-4-with-nextjs-14-working-setupNextjs with react-leaflet - SSR, webpack | window not defined, icon not found so I'm starting from this Map and page to be able to hide the other maps. Here is my Map and page code to hide the other maps and leave only the one of Cameroon, but I don't know why the map is not displaying.

I need help please. I would like to hide the other maps and only show the one of Cameroon. I'm using Leaflet and I'm on Next.js to be able to display the map. I saw this page https://stackoverflow.com/questions/77978480/react-leaflet-4-with-nextjs-14-working-setup so I'm starting from this Map and page to be able to hide the other maps. Here is my Map and page code to hide the other maps and leave only the one of Cameroon, but I don't know why the map is not displaying.

I need help please. I would like to hide the other maps and only show the one of Cameroon. I'm using Leaflet and I'm on Next.js to be able to display the map. I saw this page Nextjs with react-leaflet - SSR, webpack | window not defined, icon not found so I'm starting from this Map and page to be able to hide the other maps. Here is my Map and page code to hide the other maps and leave only the one of Cameroon, but I don't know why the map is not displaying.

Source Link

Hide rest of map around country with leaflet.js in next js

I need help please. I would like to hide the other maps and only show the one of Cameroon. I'm using Leaflet and I'm on Next.js to be able to display the map. I saw this page https://stackoverflow.com/questions/77978480/react-leaflet-4-with-nextjs-14-working-setup so I'm starting from this Map and page to be able to hide the other maps. Here is my Map and page code to hide the other maps and leave only the one of Cameroon, but I don't know why the map is not displaying.


**Map.tsx:**

"use client";
import "leaflet/dist/leaflet.css";
import "leaflet-defaulticon-compatibility/dist/leaflet-defaulticon-compatibility.webpack.css";
import "leaflet-defaulticon-compatibility";
import L from "leaflet";
import { useEffect, useRef } from "react";
import { MapContainer, Marker, Popup, TileLayer } from "react-leaflet";



export default function Map() {
  const mapRef = useRef<L.Map | null>(null);

  useEffect(() => {
    if (!mapRef.current) {
      mapRef.current = L.map("map").setView([7.369722, 12.354722], 6);

      
      L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
        attribution: "© OpenStreetMap contributors",
      }).addTo(mapRef.current);

      
      var cameroon: GeoJSON.Feature<GeoJSON.Polygon> = {
        type: "Feature",
        properties: {
          name: "Cameroon",
          code: "CMR",
          group: "Countries",
        },
        geometry: {
          type: "Polygon",
          coordinates: [
            [
              [13.075822, 2.267097],
              [12.951334, 2.321616],
              [12.35938, 2.192812],
              [11.751665, 2.326758],
              [11.276449, 2.261051],
              [9.649158, 2.283866],
              [9.795196, 3.073404],
              [9.404367, 3.734527],
              [8.948116, 3.904129],
              [8.744924, 4.352215],
              [8.488816, 4.495617],
              [8.500288, 4.771983],
              [8.757533, 5.479666],
              [9.233163, 6.444491],
              [9.522706, 6.453482],
              [10.118277, 7.038775],
              [10.497375, 7.055358],
              [11.058788, 6.644427],
              [11.745774, 6.981383],
              [11.839309, 7.397042],
              [12.063946, 7.799808],
              [12.218872, 8.305824],
              [12.753672, 8.717763],
              [12.955468, 9.417772],
              [13.1676, 9.640626],
              [13.308676, 10.160362],
              [13.57295, 10.798566],
              [14.415379, 11.572369],
              [14.468192, 11.904752],
              [14.577178, 12.085361],
              [14.181336, 12.483657],
              [14.213531, 12.802035],
              [14.495787, 12.859396],
              [14.893386, 12.219048],
              [14.960152, 11.555574],
              [14.923565, 10.891325],
              [15.467873, 9.982337],
              [14.909354, 9.992129],
              [14.627201, 9.920919],
              [14.171466, 10.021378],
              [13.954218, 9.549495],
              [14.544467, 8.965861],
              [14.979996, 8.796104],
              [15.120866, 8.38215],
              [15.436092, 7.692812],
              [15.27946, 7.421925],
              [14.776545, 6.408498],
              [14.53656, 6.226959],
              [14.459407, 5.451761],
              [14.558936, 5.030598],
              [14.478372, 4.732605],
              [14.950953, 4.210389],
              [15.03622, 3.851367],
              [15.405396, 3.335301],
              [15.862732, 3.013537],
              [15.907381, 2.557389],
              [16.012852, 2.26764],
              [15.940919, 1.727673],
              [15.146342, 1.964015],
              [14.337813, 2.227875],
              [13.075822, 2.267097],
            ],
          ],
        },
      };

     
      L.geoJSON(cameroon).addTo(mapRef.current);


      var outerRing = [
        [-180, -90],
        [-180, 90],
        [180, 90],
        [180, -90],
        [-180, -90],
      ];
      var cameroonCoordinates = cameroon.geometry.coordinates[0];
      var mask: GeoJSON.Feature<GeoJSON.Polygon> = {
        type: "Feature",
        properties: {},
        geometry: {
          type: "Polygon",
          coordinates: [outerRing.concat(cameroonCoordinates.reverse())],
        },
      };

      L.geoJSON(mask).addTo(mapRef.current).setStyle({
        interactive: false,
        color: "#000",
        fillColor: "#000",
        fillOpacity: 0.6,
      });
    }
  }, []);

  return <div id="map" style={{ height: "100vh", width: "100%" }}></div>;
}


**page.tsx**:

"use client";
import dynamic from "next/dynamic";


const LazyMap = dynamic(() => import("../../../app/dashboard/Cartographie/Map"), {
  ssr: false,
  loading: () => <p>Chargement...</p>,
});


export default function Home() {
  return (
    <main>
      <LazyMap />
    </main>
  );
}

As I said, I've coded this code but there's no map and no error message on my front end.