Giter Site home page Giter Site logo

Comments (7)

dapriett avatar dapriett commented on May 17, 2024 1

Nice work @naderio! Yeah, makes sense to keep it separate. I added a link to your module in the readme.

from nativescript-google-maps-sdk.

dapriett avatar dapriett commented on May 17, 2024

Hi @hirbod - would be a great feature. I currently don't have the time to work on it, but would welcome any pull requests if someone wants to pick it up.

from nativescript-google-maps-sdk.

dapriett avatar dapriett commented on May 17, 2024

Clustering guides: Android | iOS

from nativescript-google-maps-sdk.

naderio avatar naderio commented on May 17, 2024

I have this implemented in android, I'll see what I can do when I have time

in the mean time, check the code in question that covers marker cluster and heatmap

app.gradle

dependencies {
    // ...
    compile 'com.google.maps.android:android-maps-utils:0.4.+'
    // ...
}

map.android.js

function setupMarkerCluster(mapView, markers, options) {
  debug('setupMarkerCluster');
  var mClusterManager = new ClusterManager(utils.ad.getApplicationContext(), mapView.gMap);

  // var renderer = new DefaultClusterRenderer(utils.ad.getApplicationContext(), mapView.gMap, mClusterManager);

  // renderer.onBeforeClusterItemRendered = function (item, markerOptions) {

  //   debug('onBeforeClusterItemRendered');

  //   markerOptions.alpha(0.8);
  //   markerOptions.flat(true);
  //   markerOptions.rotation(item.rotation);

  //   var icon = new Image();
  //   icon.imageSource = imageSource.fromResource('ic_marker_taxi');
  //   var androidIcon = com.google.android.gms.maps.model.BitmapDescriptorFactory.fromBitmap(icon.imageSource.android);
  //   markerOptions.icon(androidIcon);

  // };

  // mClusterManager.setRenderer(renderer);

  mapView.gMap.setOnCameraChangeListener(mClusterManager);

  markers.forEach(function (marker) {
    mClusterManager.addItem(new ClusterItem({
      rotation: marker.rotation,
      getPosition: function () {
        return new LatLng(marker.position[0], marker.position[1]);
      }
    }));
  });

  mClusterManager.cluster();
}
exports.setupMarkerCluster = setupMarkerCluster;

function setupHeatmap(mapView, markers, config) {
  debug('setupHeatmap');

  var list = new java.util.ArrayList();

  markers.forEach(function (marker) {
    list.add(new LatLng(marker.position[0], marker.position[1]));
  });

  if (config) {

    config.mProvider.setData(list);
    config.mOverlay.clearTileCache();

  } else {

    config = {};

    config.mProvider = new HeatmapTileProvider.Builder()
      .data(list)
      .build();

    config.mOverlay = mapView.gMap.addTileOverlay(new TileOverlayOptions().tileProvider(config.mProvider));

  }

  return config;
}
exports.setupHeatmap = setupHeatmap;

from nativescript-google-maps-sdk.

naderio avatar naderio commented on May 17, 2024

supporting marker cluster and other features require adding extra dependencies which is probably not a good idea to include them by default.
I took the liberty to implement this as separate module https://github.com/naderio/nativescript-google-maps-utils. It works only on Android for now.

from nativescript-google-maps-sdk.

dxshindeo avatar dxshindeo commented on May 17, 2024

Is the commented fragment of "DefaultClusterRenderer" correct? Because it doesn't throw me any error, but it also doesn't show any console.log I put in onBeforeClusterItemRendered function. So that function isn't called?

from nativescript-google-maps-sdk.

dxshindeo avatar dxshindeo commented on May 17, 2024

The cluster won't even initialize if I don't uncomment the commented part...

from nativescript-google-maps-sdk.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.