Markerclusterer get cluster size in meters


Sushmit Chakraborty

I am learning Google Maps in JavaScript. I'm following the tutorial code and so far I have a map with some markers clustered on zoom out. Here is the code -

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Marker Clustering</title>
    <style>
      #map {
        height: 500px;
      }
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>

      function initMap() {

        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 3,
          center: {lat: -28.024, lng: 140.887}
        });

        var markers = locations.map(function(location) {
          return new google.maps.Marker({
            position: location
          });
        });

        // Add a marker clusterer to manage the markers.
        var markerCluster = new MarkerClusterer(map, markers,
            {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'}
        );
        google.maps.event.addListener(markerCluster, 'clusterclick', function(cluster) {
            console.log(markerCluster.getGridSize());
        });
      }
      var locations = [
        {lat: -31.563910, 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.750000, lng: 145.116667},
        {lat: -37.759859, lng: 145.128708},
        {lat: -37.765015, lng: 145.133858},
        {lat: -37.770104, lng: 145.143299},
        {lat: -37.773700, 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.438000},
        {lat: -43.999792, lng: 170.463352}
      ]
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/js-marker-clusterer/1.0.0/markerclusterer_compiled.js">
    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=APIKEYHERE&callback=initMap">
    </script>
  </body>
</html>

I want to get the size of the cluster when I click on the cluster, so far I am using getGridSize to get it, but it returns the value in pixels. Is there anyway I can get this value in meters or kilometers?

Teacher teacher

You should probably use MarkerClustererPlus, it's much newer than what you use https://github.com/googlemaps/v3-utility-library/tree/master/packages/markerclustererplus

You can use the overlay created by the marker clusterer and use its projection to transform 2 points, each spaced n pixels apart, where n is your grid size. You can use this method.fromContainerPixelToLatLng

You can then LatLnguse methods to calculate the distance between two points using the Geometry library (which needs to be included in the API call) .computeDistanceBetween

Proof of concept: here

var map;
var markers = [];
var markerCluster;

function initialize() {

  var center = new google.maps.LatLng(0, 0);

  map = new google.maps.Map(document.getElementById('map'), {
    zoom: 3,
    minZoom: 1,
    center: center,
    scaleControl: true,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });

  // Cluster all the markers
  markerCluster = new MarkerClusterer(map, markers, {
    imagePath: 'https://ccplugins.co/markerclusterer/images/m',
    gridSize: 100,
    minimumClusterSize: 10
  });

  google.maps.event.addListener(map, 'idle', function() {

    getGridSizeInMeters();
  });
}

function getGridSizeInMeters() {

  var size = markerCluster.getGridSize();

  var p1 = markerCluster.getProjection().fromContainerPixelToLatLng(new google.maps.Point(0, 0));
  var p2 = markerCluster.getProjection().fromContainerPixelToLatLng(new google.maps.Point(0, size));

  var meters = google.maps.geometry.spherical.computeDistanceBetween(p1, p2);

  console.log('Grid size is %i meters / %i kilometers', meters, meters / 1000);
}

google.maps.event.addDomListener(window, 'load', initialize);
#map {
  height: 180px;
}
<div id="map"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/markerclustererplus/2.1.4/markerclusterer.min.js"></script>
<!-- Replace the value of the key parameter with your own API key. -->
<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry&key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initialize" async defer></script>

However, the warning is based on the Mercator projection, which depends on the zoom level, latitude, and therefore the part that is calculated on the map projection, so the results can vary widely.

Related


Markerclusterer get cluster size in meters

Sushmit Chakraborty I am learning Google Maps in JavaScript. I'm following the tutorial code and so far I have a map with some markers clustered on zoom out. Here is the code - <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.

Markerclusterer get cluster size in meters

Sushmit Chakraborty I am learning Google Maps in JavaScript. I'm following the tutorial code and so far I have a map with some markers clustered on zoom out. Here is the code - <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.

Markerclusterer get cluster size in meters

Sushmit Chakraborty I am learning Google Maps in JavaScript. I'm following the tutorial code and so far I have a map with some markers clustered on zoom out. Here is the code - <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.

Markerclusterer get cluster size in meters

Sushmit Chakraborty I am learning Google Maps in JavaScript. I'm following the tutorial code and so far I have a map with some markers clustered on zoom out. Here is the code - <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.

Markerclusterer get cluster size in meters

Sushmit Chakraborty I am learning Google Maps in JavaScript. I'm following the tutorial code and so far I have a map with some markers clustered on zoom out. Here is the code - <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.

Markerclusterer get cluster size in meters

Sushmit Chakraborty I am learning Google Maps in JavaScript. I'm following the tutorial code and so far I have a map with some markers clustered on zoom out. Here is the code - <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.

markerclusterer click on cluster to get child markers

nelly2000 Using Google Maps v3 with markerclusterer in jquery mobile web app works fine. I have a listview and want to populate the listview with details of all the markers in the cluster only if the cluster contains 25 or less markers and I want to use the de

How to get the size of tiles in a map in meters

Dominic Altres Hi I'm currently working on a geo based program and would like to know how to get the size of a tile. Let's say my Googleplex coordinates are at latitude 37.4219999 and longitude -122.0862462. At 15 zoom level I can get x to be 5271 and y12706.

How to get the size of tiles in a map in meters

Dominic Altres Hi I'm currently working on a geo based program and would like to know how to get the size of a tile. Let's say my Googleplex coordinates are at latitude 37.4219999 and longitude -122.0862462. At 15 zoom level I can get x to be 5271 and y12706.

How to get the size of tiles in a map in meters

Dominic Altres Hi I'm currently working on a geo based program and would like to know how to get the size of a tile. Let's say my Googleplex coordinates are at latitude 37.4219999 and longitude -122.0862462. At 15 zoom level I can get x to be 5271 and y12706.

How to get the size of tiles in a map in meters

Dominic Altres Hi I'm currently working on a geo based program and would like to know how to get the size of a tile. Let's say my Googleplex coordinates are at latitude 37.4219999 and longitude -122.0862462. At 15 zoom level I can get x to be 5271 and y12706.

How to get the size of tiles in a map in meters

Dominic Altres Hi I'm currently working on a geo based program and would like to know how to get the size of a tile. Let's say my Googleplex coordinates are at latitude 37.4219999 and longitude -122.0862462. At 15 zoom level I can get x to be 5271 and y12706.

Get cluster size in sklearn in python

username I am using sklearn DBSCAN to cluster data as follows. #Apply DBSCAN (sims == my data as list of lists) db1 = DBSCAN(min_samples=1, metric='precomputed').fit(sims) db1_labels = db1.labels_ db1n_clusters_ = len(set(db1_labels)) - (1 if -1 in db1_labels

Get cluster size in sklearn in python

username I am using sklearn DBSCAN to cluster data as follows. #Apply DBSCAN (sims == my data as list of lists) db1 = DBSCAN(min_samples=1, metric='precomputed').fit(sims) db1_labels = db1.labels_ db1n_clusters_ = len(set(db1_labels)) - (1 if -1 in db1_labels

Get cluster size in sklearn in python

username I am using sklearn DBSCAN to cluster data as follows. #Apply DBSCAN (sims == my data as list of lists) db1 = DBSCAN(min_samples=1, metric='precomputed').fit(sims) db1_labels = db1.labels_ db1n_clusters_ = len(set(db1_labels)) - (1 if -1 in db1_labels

Get cluster size in sklearn in python

username I am using sklearn DBSCAN to cluster data as follows. #Apply DBSCAN (sims == my data as list of lists) db1 = DBSCAN(min_samples=1, metric='precomputed').fit(sims) db1_labels = db1.labels_ db1n_clusters_ = len(set(db1_labels)) - (1 if -1 in db1_labels

Get cluster size in sklearn in python

username I am using sklearn DBSCAN to cluster data as follows. #Apply DBSCAN (sims == my data as list of lists) db1 = DBSCAN(min_samples=1, metric='precomputed').fit(sims) db1_labels = db1.labels_ db1n_clusters_ = len(set(db1_labels)) - (1 if -1 in db1_labels

How to get distance in meters

Adi Khan I have the below stored procedure, I want to check the distance of my car's latitude and longitude, if the distance is less than 500 in meters, show which geofence is closest, if that geofence id is closest to the car's longitude. id i'm new to sql se

Get marker information from markerclusterer

Jonathan I have pushed markers into markerClusterer. When I click on the markerClusterer, I want to show the information of the nmarkers in the cluster. However, when I use the getMarkers() method, it doesn't provide the information stored in the markers, only

Get marker information from markerclusterer

Jonathan I have pushed markers into markerClusterer. When I click on the markerClusterer, I want to show the information of the nmarkers in the cluster. However, when I use the getMarkers() method, it doesn't provide the information stored in the markers, only

Get marker information from markerclusterer

Jonathan I have pushed markers into markerClusterer. When I click on the markerClusterer, I want to show the information of the nmarkers in the cluster. However, when I use the getMarkers() method, it doesn't provide the information stored in the markers, only

Get marker information from markerclusterer

Jonathan I have pushed markers into markerClusterer. When I click on the markerClusterer, I want to show the information of the nmarkers in the cluster. However, when I use the getMarkers() method, it doesn't provide the information stored in the markers, only

Get marker information from markerclusterer

Jonathan I have pushed markers into markerClusterer. When I click on the markerClusterer, I want to show the information of the nmarkers in the cluster. However, when I use the getMarkers() method, it doesn't provide the information stored in the markers, only

How to get the size of a pixel cluster in R

Laurent I have a picture in 2 colors. Red pixels are clustered. I would like to know the maximum size of each cluster to compare with an acceptable tolerance. How to do it? Is there a function to execute? Alan Cameron For this kind of image analysis, you can c

Redis - get total dataset size in cluster

pre When the Redis instance is set up and running, the dataset size (in bytes) can be retrieved from the output of the following command by looking at the used_memory_dataset field. ./redis-cli -h <ip address> -p <port> info However, when I have multiple inst