1

I am using the following module map for maps in reactjs.

But I have to change the color of the MarkerClusterer and the writing inside it.

At the moment, the writing inside it tells me how many <Marker /> there are inside it.

What I would like to print instead is something like 21/60, for example.

The documentation shows that calculator should be used, but I don't understand how.

Link: codesanbox

Can anyone help me out?

Code:

import React from "react";
import {
  GoogleMap,
  LoadScript,
  MarkerClusterer,
  Marker
} from "@react-google-maps/api";

const mapContainerStyle = {
  height: "800px",
  width: "800px"
};

const center = { lat: -28.024, lng: 140.887 };

const locations = [
  { lat: -31.56391, lng: 147.154312 },
  { lat: -33.718234, lng: 150.363181 },
  { lat: -33.727111, lng: 150.371124 },
  { lat: -33.848588, lng: 151.209834 },
  { lat: -33.851702, lng: 151.216968 },
  { lat: -34.671264, lng: 150.863657 },
  { lat: -35.304724, lng: 148.662905 },
  { lat: -36.817685, lng: 175.699196 },
  { lat: -36.828611, lng: 175.790222 },
  { lat: -37.75, lng: 145.116667 },
  { lat: -37.759859, lng: 145.128708 },
  { lat: -37.765015, lng: 145.133858 },
  { lat: -37.770104, lng: 145.143299 },
  { lat: -37.7737, lng: 145.145187 },
  { lat: -37.774785, lng: 145.137978 },
  { lat: -37.819616, lng: 144.968119 },
  { lat: -38.330766, lng: 144.695692 },
  { lat: -39.927193, lng: 175.053218 },
  { lat: -41.330162, lng: 174.865694 },
  { lat: -42.734358, lng: 147.439506 },
  { lat: -42.734358, lng: 147.501315 },
  { lat: -42.735258, lng: 147.438 },
  { lat: -43.999792, lng: 170.463352 }
];

const options = {
  imagePath:
    "https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m" // so you must have m1.png, m2.png, m3.png, m4.png, m5.png and m6.png in that folder
};

function createKey(location) {
  return location.lat + location.lng;
}

class LoadScriptOnlyIfNeeded extends LoadScript {
  componentDidMount() {
    const cleaningUp = true;
    const isBrowser = typeof document !== "undefined"; // require('@react-google-maps/api/src/utils/isbrowser')
    const isAlreadyLoaded =
      window.google &&
      window.google.maps &&
      document.querySelector("body.first-hit-completed"); // AJAX page loading system is adding this class the first time the app is loaded
    if (!isAlreadyLoaded && isBrowser) {
      // @ts-ignore
      if (window.google && !cleaningUp) {
        console.error("google api is already presented");
        return;
      }

      this.isCleaningUp().then(this.injectScript);
    }

    if (isAlreadyLoaded) {
      this.setState({ loaded: true });
    }
  }
}

const MapWithMarkerClusterer = () => {
  return (
    <LoadScriptOnlyIfNeeded
      id="script-loader"
      googleMapsApiKey={""}
      libraries={["places", "drawing"]}
      language={"it"}
      region={"it"}
    >
      <GoogleMap
        id="marker-example"
        mapContainerStyle={mapContainerStyle}
        zoom={3}
        center={center}
      >
        <MarkerClusterer options={options} minimumClusterSize={5}>
          {(clusterer) =>
            locations.map((location) => (
              <Marker
                key={createKey(location)}
                position={location}
                clusterer={clusterer}
              />
            ))
          }
        </MarkerClusterer>
      </GoogleMap>
    </LoadScriptOnlyIfNeeded>
  );
};

export default React.memo(MapWithMarkerClusterer);
Paul
  • 3,644
  • 9
  • 47
  • 113
  • Duplicate of [modifying MarkerClusterer icons for top score, rather than marker count](https://stackoverflow.com/questions/12783250/modifying-markerclusterer-icons-for-top-score-rather-than-marker-count) – MrUpsidown Mar 08 '21 at 15:58
  • @MrUpsidown: Could you give me a hand? I tried using this: `MarkerClusterer.prototype.calculator_ = function (markers, numStyles) {` – Paul Mar 09 '21 at 17:09
  • If anything else than what you can find in the duplicate, you must provide a [mcve] that allows to reproduce the issue. You haven't even shared what you have tried and what didn't work. – MrUpsidown Mar 09 '21 at 17:20
  • @MrUpsidown: Here is an example with the cluster, but I don't understand how to set up the cluster. https://codesandbox.io/s/material-demo-forked-h72tx?file=/demo.js – Paul Mar 10 '21 at 11:59
  • https://stackoverflow.com/questions/39335396/how-to-hide-the-numbers-on-a-cluster-marker-in-google-maps – MrUpsidown Mar 10 '21 at 12:09

0 Answers0