# Query Installed Regions

This section deals with reading locally installed regions, checking whether offline map data is available, and inspecting coverage bounds and cached region details.

```swift
let installedRegions = NGLRegionalOffline.listInstalledRegions()
 
for region in installedRegions {
    print(
        "region=\(region.regionId) " +
        "version=\(region.regionVersion ?? "-") " +
        "packages=\(region.packageCount) " +
        "complete=\(region.allTarsOk)"
    )
}
```

To check whether any region is available:

```swift
let hasInstalledRegions = NGLRegionalOffline.hasInstalledOfflineRegions()
```

To read the downloaded tile coverage bounds for installed regions:

```swift
let boundaries = NGLRegionalOffline.installedRegionBoundaries()
```

> _These values come from_ `regions.definition.bounds` _in the installed Tile databases and describe coverage rectangles, not exact administrative polygons_.

To load locally cached details for an installed region:

```swift
let result = NGLRegionalOffline.loadDetail(forRegionId: regionId)
let localDetail = result.detail
```
