We can use [`GeoServer`](http://reference.wolfram.com/language/ref/GeoServer.html) to use map tiles from an external service.  There are many compatible services:

 - https://mathematica.stackexchange.com/q/155248/12

How can we use multiple layers, possibly loaded from multiple different servers, in a way that integrates well with the [`GeoGraphics`](http://reference.wolfram.com/language/ref/GeoGraphics.html) functionality and also work with [`DynamicGeoGraphics`](http://reference.wolfram.com/language/ref/DynamicGeoGraphics.html)?

----

For example, using the definitions [from the above linked answer][1],

    base = GeoGraphics[{Entity["Country", "Hungary"]}, 
      GeoServer -> stamen["watercolor"]]


![Mathematica graphics](https://i.sstatic.net/bwb8E.png)

    labels = GeoGraphics[{Entity["Country", "Hungary"]}, 
      GeoServer -> carto["light_only_labels"]]

![Mathematica graphics](https://i.sstatic.net/OhQKI.png)

We could layer these together manually using one of multiple possible ways, e.g.

    Overlay[{base, labels}]

![Mathematica graphics](https://i.sstatic.net/53wdW.png)

But this is not a good solution because it requires multiple `GeoGraphics` calls that are independent, and does not work with functions like `DynamicGeoGraphics`.

  [1]: https://mathematica.stackexchange.com/a/155250/12