Open Source / News

God's Eye View in 3D: the free Cesium ion route that works from Europe

Google restricts its photorealistic 3D tiles for new projects billed in the European Economic Area. We tested Cesium ion as an alternative in God's Eye View, from the Netherlands.

By Marvin Smit · 17/09/2026 · 9 min read · Updated
Screenshot of God's Eye View showing Amsterdam Central Station and the Damrak in Google's photorealistic 3D, loaded through a free Cesium ion token
Amsterdam Central Station in Google's photorealistic 3D, loaded through a free Cesium ion token in our test on 17 September 2026. 3D imagery: Google, Airbus, streamed through Cesium ion.

For new Google Maps projects linked to a billing account in the European Economic Area, the direct route to Google's Photorealistic 3D Tiles is restricted. Google's Map Tiles API returns a 403 error for those projects, and for older projects once they are modified. We tested Cesium ion as an alternative from the Netherlands on 17 September 2026. In our six test runs the 3D view settled in about six seconds and our frame counter stayed at 60 per second, without paying anything.

This is the follow-up to our first look at God's Eye View, where we installed it without any API key.

Why the direct Google route is restricted for EEA billing accounts

Screenshot of God's Eye View showing the same view of Amsterdam Central Station as flat Esri satellite imagery, without 3D buildings
The same view as flat satellite imagery, which is what the app shows without a working 3D route. Imagery: Esri, Vantor, Earthstar Geographics, and the GIS User Community.

God's Eye View can load Google's Photorealistic 3D Tiles in two ways: with your own Google Maps key, or through Cesium ion. The README lists the Google key as the metered option that needs billing enabled. If your Google Cloud billing account has an address in the European Economic Area, that route is now restricted. Where you live is not the test; where the project is billed is.

Google says so itself. Its notice for European Economic Area customers states that for projects created after 8 July 2025 with an EEA billing address, the Map Tiles API "will throw a 403 HTTP error" when you request Photorealistic 3D Tiles. The same applies to older projects that are no longer in what Google calls the Unmodified State. The alternative Google suggests, its own 3D Maps product, is a different technology that God's Eye View does not use.

We did not create a Google key to confirm the error ourselves. We did not need to: the point of this article is the route that works. Without it, this flat satellite view is what the app shows you.

The free route: a Cesium ion Community account

Screenshot of God's Eye View showing the Texas State Capitol in Austin in photorealistic 3D with the credit line Cesium ion and Google Maps
The Texas State Capitol in 3D. The credit line at the bottom reads Cesium ion and Google Maps. 3D imagery: Google, Landsat / Copernicus, Data SIO, NOAA, U.S. Navy, NGA, GEBCO, streamed through Cesium ion.

Cesium is the company behind CesiumJS, the open-source globe engine God's Eye View is built on. Its hosted service, Cesium ion, offers access to Google's 3D tiles, and the free tier includes them.

PlanPriceGoogle 3D quotaAllowed use
Community$01,000 root tiles a monthNon-commercial personal projects, exploratory commercial or government evaluation, unfunded education
Commercial$149 a month (individual)5,000 root tiles a monthCommercial use

That is Cesium's wording on its pricing page on 17 September 2026. The page does not say what happens when you pass 1,000. In late August a community member reported from Prague that this route works from Europe. The maintainers credited that report in the 0.1.0 release notes, and the current source code loads the Cesium ion asset when a token is set.

Setting it up: four steps, two small snags

Screenshot of God's Eye View's POWER UP panel, where the Cesium ion token is pasted and saved
The POWER UP panel in God's Eye View, where the Cesium ion token goes. Click to enlarge. Background imagery: Esri, Vantor, Earthstar Geographics, and the GIS User Community.

The whole setup took about ten minutes, most of it creating the account.

  • Create a free account at cesium.com/ion.
  • Open the Access Tokens page and copy the Default Token. It starts with "eyJ".
  • In the Asset Depot, add Google Photorealistic 3D Tiles to My Assets.
  • In God's Eye View, click POWER UP in the bottom-right corner, paste the token in the Cesium ion field and click Save keys.

The app wrote the token to a local file that Git ignores, and its dev server restarted itself twice within two seconds. We did not have to restart anything. The chip in the corner went from "8 keys waiting" to "7 keys waiting".

Two snags. First, the token page is easy to miss. We landed on the developer page for OAuth apps before finding Access Tokens in the top navigation. Second, the POWER UP panel undersells the key: it describes Cesium ion as "Bing imagery map stacks + world terrain" and never mentions that it also unlocks the Google 3D cities. The README does.

One warning that is ours, not theirs: never paste the token in a chat, a screenshot or a public repository. It is meant to be used from a browser, so the damage would be limited to your quota, but it is still yours.

What we measured

Side-by-side screenshots of Amsterdam Central Station in God's Eye View: flat Esri satellite imagery on the left, Google photorealistic 3D on the right
Amsterdam with the same camera position. Left: satellite imagery from Esri, Vantor, Earthstar Geographics, and the GIS User Community. Right: 3D imagery from Google, Airbus, streamed through Cesium ion.

We loaded three places in both map modes on the same Windows 11 laptop as in our first article: an Intel Core Ultra X7 358H with its integrated Intel Arc B390 GPU and 31 GB of RAM. Chrome ran headless at 1600 by 900 pixels on the real GPU. "Settled" is the time from page load until the network had been quiet for three seconds.

PlaceMapSettled afterFrames per secondRequests
Amsterdam, Central StationGoogle 3D via Cesium ion5.8 s60545
Amsterdam, Central StationEsri satellite (keyless)6.8 s60866
Rotterdam, NoordereilandGoogle 3D via Cesium ion5.0 s60656
Rotterdam, NoordereilandEsri satellite (keyless)6.7 s60959
Austin, State CapitolGoogle 3D via Cesium ion5.7 s60803
Austin, State CapitolEsri satellite (keyless)6.7 s60995

Three observations from these six runs, on one laptop, one connection and Chrome 152. The 3D view did not settle later than the flat one. It settled one to two seconds sooner in every pair, with fewer requests. Each flat-map run came right after the 3D run of the same place in the same browser session, so treat the gap as an indication, not a benchmark. "Settled" means the network went quiet. That is not the same as every tile being sharp, as Rotterdam shows below. Our frame counter stayed at 60 per second in all six runs. We counted the browser's animation frames for four seconds per view. That shows the page kept up with the display while the camera stood still, not how the scene performs while you fly around. And there was not a single HTTP error: no 403, no region block, no VPN.

In 3D mode the tiles come straight from Google's own servers at tile.googleapis.com. Cesium only hands out the session: we counted two requests to its API and one to its asset server per page load.

What it looks like, and where it falls short

Screenshot of God's Eye View showing Rotterdam's Noordereiland with the Willemsbrug and De Hef in 3D; tiles near the right and top edges are still coarse
Rotterdam's Noordereiland in 3D. The centre is sharp; tiles near the right and top edges stayed coarse. 3D imagery: Google, Data SIO, NOAA, U.S. Navy, NGA, GEBCO, IBCAO, streamed through Cesium ion.

Amsterdam and Austin loaded sharp from edge to edge. Central Station, the Damrak and the domed church west of it are all modelled; in Austin the Capitol and the towers around it stand up from the ground.

Rotterdam was the exception. The centre of the frame, with the red Willemsbrug and the old lift bridge De Hef, was crisp. Towards the right and top edges the tiles stayed coarse and blocky, even on a second capture where we waited nine seconds after the network went quiet. We cannot say whether that is Google's data for that area, the app's level-of-detail settings, or our headless browser. We can only say it happened, and you can see it in the screenshot.

The bottom-left credit line changes too. In 3D it reads "Cesium ion, Upgrade for commercial use, Google Maps, Data attribution". The project's own documentation says that credit must stay visible, and that the app keeps it on screen even in its clean-view and recording modes. We did not test those modes.

What the quota really means

Side-by-side screenshots of the Texas State Capitol in God's Eye View: flat satellite imagery on the left, photorealistic 3D on the right
Austin. Left: satellite imagery from Esri, Vantor, Earthstar Geographics, and the GIS User Community. Right: 3D imagery from Google, Landsat / Copernicus, Data SIO, NOAA, U.S. Navy, NGA, GEBCO, streamed through Cesium ion.

Cesium counts the free tier in "root tiles". That sounds technical, so we watched the network. Every page load made exactly one request to Google's root tileset file, and everything after it, hundreds of tile downloads, rode on that one session. According to Google's billing documentation, one root request allows up to three hours of rendering.

Your usageRoot requests a monthInside the free 1,000?
One session every eveningabout 30Yes, with room to spare
Five reloads a day while tinkeringabout 150Yes
Ten people sharing one token, five loads a day eachabout 1,500No

So 1,000 a month is roughly 1,000 times opening or reloading the app, not 1,000 tiles. For one person that is generous.

One thing to know: with the token set, the app also made one root request when we chose the flat Esri map, plus 61 to 97 requests to Google's tile server. If Cesium counts that the way we read it, every session uses quota whether or not you look at the 3D cities. That is our network observation, not something Cesium has confirmed. In flat mode we also saw hundreds of requests to Cesium's asset server that were absent before the token. The most likely explanation is Cesium's world terrain, which the POWER UP panel says the token unlocks, but we did not inspect those requests further.

The limit that matters more than the number is the wording. Cesium's free plan covers non-commercial personal projects, exploratory commercial or government development, such as evaluating whether ion meets your needs, and unfunded education. For solutions used outside your own organisation Cesium asks you to contact them about licensing. Read Cesium's plan conditions against your own use case. This is not licensing advice.

Our verdict

Side-by-side screenshots of Rotterdam's Noordereiland in God's Eye View: flat satellite imagery on the left, photorealistic 3D on the right
Rotterdam. Left: satellite imagery from Esri, Vantor, Earthstar Geographics, and the GIS User Community. Right: 3D imagery from Google, Data SIO, NOAA, U.S. Navy, NGA, GEBCO, IBCAO, streamed through Cesium ion.

For projects billed in the European Economic Area, Cesium ion is the documented 3D route that is still open, and in our test it worked well. Ten minutes of setup, no credit card, and the 3D cities ran smoothly on our laptop. If you followed our keyless install, adding the Cesium ion token is the first upgrade we would make, before any of the other keys.

Keep three things in mind. The free plan puts conditions on commercial use. The quota is counted per session, and probably also when you stay on the flat map. And coverage is not uniform: Amsterdam was flawless, parts of Rotterdam were not.

Next in this series: the data licences behind God's Eye View, and what "MIT licensed" does and does not let you do with it.

How we checked

Google's notice "Map Tiles API adjustments for EEA customers", Cesium ion's pricing page and CesiumJS documentation, the God's Eye View README, source code (src/maps/google3d.js, src/sharelink.js) and release notes, and community issue #71, all read on 16 and 17 September 2026. Account creation, setup and measurements on 17 September 2026 on the machine described above, from commit 531ef52, in Chrome 152 with a fresh browser profile per script run, with a script that loads each view, waits for the network to settle, measures frame rate for four seconds and records every external request. Screenshots are our own and unedited apart from resizing and the side-by-side layout. We did not test the direct Google route, what happens past the quota, or any other key.

The image credits under our screenshots are the ones the app listed for each view in its Data attribution panel on 17 September 2026.

Updated 17 September 2026: we added the providers' credits to every caption. We also narrowed our statements about Europe to projects with an EEA billing account, added Cesium's own wording on evaluation use, and limited our performance conclusions to our six test runs.