Google Maps alternative

This page answers the question developers actually ask: what does my existing Google code turn into, what is missing, and what does it cost.

Short answer: map display, address search, coordinate-to-address, routing and nearby places can all be replaced — served from EU infrastructure, with no cookies and no consent banner. Street View, live traffic, transit directions and Google reviews cannot.

Request a key Live examples

What replaces what

GoogleTilezzaCoverage
Maps JavaScript API/raster/… · /tiles/… — Leaflet or MapLibre GLfull
Maps Static API/raster/{style}/{z}/{x}/{y}.pngfull
Geocoding API/geocodefull
Geocoding API (reverse)/geocode/reversefull
Directions API/route — car, bicycle, walking, truckfull
Distance Matrix API/route with multiple pointsfull
Places API — nearby places/places — category, photo, opening hourspartial
Places API — ratings, reviews—none
Street View—none
Live traffic, traffic-aware routing—none
Public transit routing—none
Satellite imagery at Google resolutionopen satellite layer (lower resolution)partial

The same thing in code

All four endpoints are live. The examples show real responses, not invented ones — these numbers come from a measurement on 2026-09-20.

A map on a page

Google Maps JavaScript API


<script src="https://maps.googleapis.com/maps/api/js?key=AIza…"></script>
<script>
  new google.maps.Map(document.getElementById('map'), {
    center: { lat: 47.1123, lng: 14.1691 },
    zoom: 13
  });
</script>

Tilezza + Leaflet

<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css">
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
<script>
  const map = L.map('map').setView([47.1123, 14.1691], 13);
  L.tileLayer('https://tilezza.eu/raster/voyager/{z}/{x}/{y}.png?key=YOUR_KEY', {
    maxZoom: 19,
    attribution: '© OpenStreetMap © Protomaps'
  }).addTo(map);
</script>

Address to coordinates

Geocoding API

GET https://maps.googleapis.com/maps/api/geocode/json
      ?address=Murau&key=AIza…

→ results[0].geometry.location = { lat: 47.1123, lng: 14.1691 }

/geocode

GET https://tilezza.eu/geocode?q=Murau&limit=1&key=YOUR_KEY

→ GeoJSON FeatureCollection
  features[0].geometry.coordinates = [14.1691, 47.1123]
  features[0].properties = { name: "Murau", county: "Bezirk Murau",
                             state: "Steiermark", countrycode: "AT" }

Route between two points

Directions API

GET https://maps.googleapis.com/maps/api/directions/json
      ?origin=47.1123,14.1691&destination=47.0707,15.4395&key=AIza…

/route

POST https://tilezza.eu/route?key=YOUR_KEY
Content-Type: application/json

{ "locations": [ { "lat": 47.1123, "lon": 14.1691 },
                 { "lat": 47.0707, "lon": 15.4395 } ],
  "costing": "auto",
  "directions_options": { "units": "kilometers", "language": "de-DE" } }

→ trip.summary = { length: 131.5, time: 4936 }   // km, másodperc
  trip.legs[0].maneuvers[0].instruction =
      "Auf Schloßberg Richtung Norden fahren."

Two more endpoints

Coordinates to address

GET https://tilezza.eu/geocode/reverse?lat=47.11&lon=14.17&key=YOUR_KEY

→ housenumber: "10a", street: "Anna-Neumann-Straße",
  postcode: "8850", city: "Murau", country: "Österreich"

Nearby places with photos

GET https://tilezza.eu/places?lat=47.11&lon=14.17&radius=5000&limit=20&key=YOUR_KEY

→ 126 találat 5 km-en belül, kategóriával, fotóval
  ("Stadtpfarrkirche St. Matthäus", category: "sight", …)

What we do NOT replace

If you need any of these, Google (or another provider) stays in the picture — better to know now than halfway through a migration.

The real difference: there is nothing to ask consent for

A Google Maps embed sends the visitor IP address and browser data to a US provider before the visitor agrees to anything. That is why it needs a consent banner, and why the map does not appear for anyone who says no. A Tilezza tile comes from an EU server, sets no cookie, and the visitor IP never reaches a log — so the map loads even for visitors who reject every banner.

What it costs

Our own prices. The billing unit differs between the two services (tile units here, loads and calls at Google), so we do not print an "N times cheaper" figure — we show ours, and when the quota runs out it pauses instead of invoicing.

PlanPriceWhat you get
Free€0100,000 tile units / month, non-commercial
Starter€8 / month (€77 / year)commercial use, own key
Pro€19 / month (€182 / year)multiple keys, domain lock, larger quota
Scale€79 / monthhigh traffic, overage ~€0.05 / 1,000 units
Enterprisefrom €199 / monthdedicated EU instance, custom extract, on-prem

Frequently asked

Is this really a Google Maps alternative?

For most products, yes: map display, address search, reverse geocoding, routing and nearby places are all covered. Street View, live traffic, transit and Google reviews are not — they are listed in the "What we do NOT replace" section on this page.

Do I need a consent banner?

No. Tile requests carry no cookies and visitor IP addresses never reach a log, so there is nothing to ask consent for. The map works even for visitors who reject every banner.

Where are the servers?

In the EU, operated by an EU company. No US CDN or proxy in the chain.

How much work is the migration?

For the map you swap the Google Maps JS API for Leaflet or MapLibre GL — usually a few hours, because the two libraries have similar APIs. Geocoding and routing are REST calls on both sides: the URL and the response field names change, the logic does not.

Does it work with both Leaflet and MapLibre?

Yes. Raster PNG for classic Leaflet, MVT vector tiles for MapLibre GL — same data, same styles, same key.

Up to what zoom is there data?

The whole planet natively to z14, and from there to z19 by vector overzoom — labels and lines stay sharp instead of pixelating.