Skip to main content

How hard is it to migrate from Google Maps?

Short answer: Depends entirely on which surface. Batch geocoding is often a sprint. Rendering, if you’re on the Google Maps JS SDK, is a rewrite of that layer. Migrate one surface. Stabilize. Then the next.

By surface, ascending

SurfaceEffortWhy
Batch geocodingLowNo UI. If it breaks, you fix a nightly job. Largest saving
Telematics reverse geocodingLowBackend, high volume, no user-facing risk
Matrix operationsMediumFlat row-major arrays. Async job lifecycle
RoutingMedium–highQuality validation required, not just cost
AutocompleteMediumUser-facing. Be honest about quality
RenderingHighMost visible. Tile aesthetics differ. Migrate last
Mobile SDKHighSeparate entitlement. Binary size. Offline strategy
Never migrate two surfaces simultaneously. Two independent changes, one production incident, ambiguous root cause. You will spend more on the investigation than you saved that month.

But optimize first

Migrating an uncached, undebounced implementation to a cheaper provider moves the waste to a cheaper meter. You will save money and still be wrong.
Cache geocoding. Batch what tolerates latency. Debounce autocomplete. Deduplicate. Stop reverse-geocoding every GPS ping. CDN in front of tiles. Re-measure. A meaningful share of teams find the bill halves without a vendor change. What remains is your real migration case.

The mechanical differences that bite

Coordinate order. HERE Routing takes lat,lng. GeoJSON is lng,lat. Once, at 2am. Country codes. Google uses ISO alpha-2 (US). HERE uses alpha-3 (USA). A naive port silently filters to nothing. 200 is not success. HERE returns HTTP 200 with an empty routes array and a notice when no path exists. 403401. Valid key, missing entitlement. Never retry. Matrix results are flat, row-major. Index wrong and you get a silently transposed matrix — plausible times, wrong assignments, nothing throws. Batch is a job lifecycle, not a bulk endpoint. Confidence scores are not comparable. queryScore: 0.9 does not mean what partial_match: false means. Recalibrate against your own ground truth. Do not port the threshold.

The hidden cost

Migration engineering time is a real line item. If the payback period exceeds eighteen months, the savings argument is weaker than the headline number. Say so before your CFO does. It costs you one migration and buys credibility for the ones worth doing.

Common misconceptions

“It’s a config change.” google.maps.* in your React components is not a config change. “We should migrate everything.” Usually not. Routing and batch geocoding to HERE, consumer place search stays on Google, is a common and sensible endpoint. “The response schemas are similar.” They’re mechanically different throughout. Not hard work. Not zero. “Tile styling is cosmetic.” It is, until the product review. Show design the maps before you commit.

Google Migration Architecture

Dual-running, shadow comparison, rollback.

Migrating from Google Maps

Endpoint mapping and sequencing.

Migrating One Endpoint

A real geocoding migration, request by request.

Reducing Google Maps Costs

Optimize first. You may not need to migrate.

Need production HERE API keys or implementation support? Placematic is an official HERE Technologies reseller and implementation partner. Talk to us.