He estado jugando con el componente gb.Map e incluso revisando su código y creo que al final entiendo más o menos como utilizarlo para visualizar mapas. O como mínimo he conseguido visualizar otros mapas además de los consabidos openstreetmap o google.
Para empezar, este componente puede obtener mapas, por defecto, de servicios WMTS (web map tile service) que utilizen el sistema de coordenadas epsg:4326. Un ejemplo podrían ser los siguientes mapas:
España (https://www.ign.es)
Cartografía:
MapView1.Map.AddTile("España topo", "http://www.ign.es/wmts/mapa-raster?Layer=MTN&Style=default&TileMatrixSet=GoogleMapsCompatible&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image/jpeg&TileMatrix={z}&TileCol={x}&TileRow={y}")
Ortofotos:
MapView1.Map.AddTile("España orto", "http://www.ign.es/wmts/pnoa-ma?Layer=OI.OrthoimageCoverage&Style=default&TileMatrixSet=GoogleMapsCompatible&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image/png&TileMatrix={z}&TileCol={x}&TileRow={y}")
Euskadi (http://www.geo.euskadi.eus)
Cartografía:
MapView1.Map.AddTile("Euskadi topo", "https://www.geo.euskadi.eus/geoeuskadi/rest/services/U11/WMTS_TOPO/MapServer/WMTS/tile/1.0.0/U11_WMTS_TOPO/default/default028mm/{z}/{y}/{x}.png")
Ortofotos:
MapView1.Map.AddTile("Euskadi orto", "https://www.geo.euskadi.eus/geoeuskadi/rest/services/U11/WMTS_ORTO/MapServer/WMTS/tile/1.0.0/U11_WMTS_ORTO/default/default028mm/{z}/{y}/{x}.png")
Catalunya (https://www.icgc.cat)
Cartografía:
MapView1.Map.AddTile("Catalunya topo", "http://geoserveis.icc.cat/icc_mapesmultibase/noutm/wmts/topo/GRID3857/{z}/{x}/{y}.jpeg")
Ortofotos:
MapView1.Map.AddTile("Catalunya orto", "http://geoserveis.icc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg")
Las diferencias entre los mapas estatales y autonómicos vienen dadas por la fecha de realización de los mapas (unos pueden ser más modernos que otros) o ser más detallados, pero siempre hay diferencias estéticas.
En el caso en que el sistema de coordenas utilizado por el servicio sea otro, hay que indicarlo en la propiedad WMSProjection. Por ejemplo en Navarra:
Navarra (https://idena.navarra.es)
Cartografía:
Ortofotos:
Además de los servicios WMTS, el componente también puede obtener datos de servicios WMS (web map service), pero se requiere más parametrización. Ejemplos de estos casos son:
Andorra (https://www.cartografia.ad/geoportal)
Cartografía:
With MapView1.Map.AddTile("Andorra topo", "https://www.ideandorra.ad/Serveis/wms_10k2003raster/ows?")
.MaxBounds = MapBounds(MapPoint(42.67791461218689, 1.8089496730257377), MapPoint(42.405083084903076, 1.379699166254689))
.WMSProjection = "epsg:27563"
.UseWebMapService = True
.WMSArgs!service = "WMS"
.WMSArgs!version = "1.1.0"
.WMSArgs!request = "GetMap"
.WMSArgs!layers = "raster_10k_2003"
.WMSArgs!bbox = "{lon},{lat2},{lon2},{lat}"
.WMSArgs!width = 256
.WMSArgs!height = 256
.WMSArgs!srs = "EPSG:27563"
.WMSArgs!format = "image/jpeg"
End With
.MaxBounds = MapBounds(MapPoint(42.67791461218689, 1.8089496730257377), MapPoint(42.405083084903076, 1.379699166254689))
.WMSProjection = "epsg:27563"
.UseWebMapService = True
.WMSArgs!service = "WMS"
.WMSArgs!version = "1.1.0"
.WMSArgs!request = "GetMap"
.WMSArgs!layers = "raster_10k_2003"
.WMSArgs!bbox = "{lon},{lat2},{lon2},{lat}"
.WMSArgs!width = 256
.WMSArgs!height = 256
.WMSArgs!srs = "EPSG:27563"
.WMSArgs!format = "image/jpeg"
End With
Ortofotos:
With MapView1.Map.AddTile("Andorra orto", "https://www.ideandorra.ad/Serveis/wmsorto2003/ows?")
.MaxBounds = MapBounds(MapPoint(42.67791461218689, 1.8089496730257377), MapPoint(42.405083084903076, 1.379699166254689))
.WMSProjection = "epsg:27563"
.UseWebMapService = True
.WMSArgs!service = "WMS"
.WMSArgs!version = "1.1.0"
.WMSArgs!request = "GetMap"
.WMSArgs!layers = "wmsorto2003:Orto5000_2003"
.WMSArgs!bbox = "{lon},{lat2},{lon2},{lat}"
.WMSArgs!width = 256
.WMSArgs!height = 256
.WMSArgs!srs = "EPSG:27563"
.WMSArgs!format = "image/jpeg"
End With
.MaxBounds = MapBounds(MapPoint(42.67791461218689, 1.8089496730257377), MapPoint(42.405083084903076, 1.379699166254689))
.WMSProjection = "epsg:27563"
.UseWebMapService = True
.WMSArgs!service = "WMS"
.WMSArgs!version = "1.1.0"
.WMSArgs!request = "GetMap"
.WMSArgs!layers = "wmsorto2003:Orto5000_2003"
.WMSArgs!bbox = "{lon},{lat2},{lon2},{lat}"
.WMSArgs!width = 256
.WMSArgs!height = 256
.WMSArgs!srs = "EPSG:27563"
.WMSArgs!format = "image/jpeg"
End With
Francia
Cartografía:
With MapView1.Map.AddTile("Francia topo", "http://mapsref.brgm.fr/wxs/refcom-brgm/refign?")
.MaxBounds = MapBounds(MapPoint(51.1752, 10.8198), MapPoint(40.8523, -5.66635))
.UseWebMapService = True
.WMSArgs!service = "WMS"
.WMSArgs!version = "1.1.1"
.WMSArgs!request = "GetMap"
.WMSArgs!layers = "FONDS_SCAN"
.WMSArgs!bbox = "{lon},{lat2},{lon2},{lat}"
.WMSArgs!width = 256
.WMSArgs!height = 256
.WMSArgs!srs = "EPSG:4326"
.WMSArgs!format = "image/jpeg"
End With
.MaxBounds = MapBounds(MapPoint(51.1752, 10.8198), MapPoint(40.8523, -5.66635))
.UseWebMapService = True
.WMSArgs!service = "WMS"
.WMSArgs!version = "1.1.1"
.WMSArgs!request = "GetMap"
.WMSArgs!layers = "FONDS_SCAN"
.WMSArgs!bbox = "{lon},{lat2},{lon2},{lat}"
.WMSArgs!width = 256
.WMSArgs!height = 256
.WMSArgs!srs = "EPSG:4326"
.WMSArgs!format = "image/jpeg"
End With
Ortofotos:
With MapView1.Map.AddTile("Francia orto", "http://mapsref.brgm.fr/wxs/refcom-brgm/refign?")
.MaxBounds = MapBounds(MapPoint(51.1752, 10.8198), MapPoint(40.8523, -5.66635))
.UseWebMapService = True
.WMSArgs!service = "WMS"
.WMSArgs!version = "1.1.1"
.WMSArgs!request = "GetMap"
.WMSArgs!layers = "ORTHO"
.WMSArgs!bbox = "{lon},{lat2},{lon2},{lat}"
.WMSArgs!width = 256
.WMSArgs!height = 256
.WMSArgs!srs = "EPSG:4326"
.WMSArgs!format = "image/jpeg"
End With
.MaxBounds = MapBounds(MapPoint(51.1752, 10.8198), MapPoint(40.8523, -5.66635))
.UseWebMapService = True
.WMSArgs!service = "WMS"
.WMSArgs!version = "1.1.1"
.WMSArgs!request = "GetMap"
.WMSArgs!layers = "ORTHO"
.WMSArgs!bbox = "{lon},{lat2},{lon2},{lat}"
.WMSArgs!width = 256
.WMSArgs!height = 256
.WMSArgs!srs = "EPSG:4326"
.WMSArgs!format = "image/jpeg"
End With
Según el sistema operativo que estemos utilizando, puede ser necesario instalar la librería gdal y/o definir una variable de entorno:
Con todo esto, he tenido también errores, en concreto mapas de Italia, Aragón y WMTS de Andorra.
Para Italia consigo descargar una imagen si pego la url directamente en el explorador, pero si lo hago a través del componente, el servicio se bloquea y da error por "estar ocupado". He leído que hay servidores que si detectan descargas masivas se autoprotegen y bloquean la ip peticionaria. Ignoro si es ese el caso.
Los servicios WMTS y WMS están definidos por el Open Geospatial Consortium (OGC) y se establece que para el WMTS, el nivel de zoom 1 es un mosaico de 2x2 teselas, el nivel 2 de 4x4, y así sucesivamente y es lo que contempla el componente gb.map. Pero también define otra normativa donde el nivel 1 de zoom es un mosaico de 4x2 teselas, el nivel 2 de 8x4 teselas, y así sucesivamente. Los servidores de Aragón y Andorra tienen esa segunda normativa y fallan en el componente gb.map.
Espero que os sea de utilidad esta información. Recordad que aunque sean servicios libres, al menos particularmente, a veces tienen un coste para utilizarlos profesionalmente. Y no está de más reconocer la autoría de la información con la propiedad Copyright.