Heatmaps in mobile app

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Heatmaps in mobile app
Medium
from 1 business day to 3 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Implementation of Heatmaps in a Mobile Application

Heatmaps in a mobile app are both an analytics and navigation tool: show order density, popular zones, driver activity. The problem isn't rendering — libraries handle it — but working with large datasets on mobile screen without FPS degradation.

How Heatmaps Are Rendered

Each library builds heatmap via kernel density estimation: for each point on screen, a weighted sum of contributions from all data points in a given radius is calculated. Result — bitmap layer on top of map.

iOS: GMUHeatmapTileLayer from google-maps-ios-utils. Data — array of GMUWeightedLatLng. Gradient radius, minimum intensity, and color scheme configurable via layer properties. Tile mechanism means new tiles render on the fly when scrolling map — no lag if dataset not huge.

Android: HeatmapTileProvider from android-maps-utils. Principle is similar. Pass Collection<LatLng> or Collection<WeightedLatLng> for weighted points.

Flutter: google_maps_flutter doesn't include heatmap out of the box. Two options: native platform channel to GMSMapView/MapView with GMUHeatmapTileLayer / HeatmapTileProvider, or flutter_map + flutter_map_heatmap library based on canvas.

Working with Large Datasets

The main problem: passing 50,000 points to GMUHeatmapTileLayer and waiting for it to process on main thread — gets ANR or 3-4 second freeze.

The right approach — server-side aggregation. Instead of 50,000 raw points, server returns already aggregated data by grid (grid aggregation): each grid cell is one point with weight equal to number of events in cell. At zoom 10 — 500×500 meter grid, at zoom 14 — 50×50 meter grid. Point count reduces to 200-500 regardless of original volume.

Server aggregation via PostGIS:

SELECT
    round(lat::numeric, 3) AS lat_grid,
    round(lon::numeric, 3) AS lon_grid,
    COUNT(*) AS weight
FROM events
WHERE created_at > now() - interval '7 days'
GROUP BY lat_grid, lon_grid;

When map zoom changes — re-request aggregation with new rounding precision. 500 ms debounce on zoom change event is mandatory.

Color Schemes and Interpretation

Standard color scheme (blue → green → yellow → red) is intuitive but doesn't work for colorblind people. For B2B analytics, single-color gradient (white → dark blue) or custom brand scheme works better.

GMUHeatmapTileLayer accepts [GMUGradient] with color array and positions — customizable without rebuild.

Timeline: two to three days — library integration, server aggregation (if needed), dynamic zoom adjustment, color scheme.