LoginSignup
7
4

More than 3 years have passed since last update.

MapKitで国土地理院のタイルデータを表示する

Posted at

iOSの MapKit は地図の上にデータをオーバレイすることができます。
一方、国土地理院では日本地図に関わる様々なデータを公開しているのですが、実は簡単に MKMapView へ表示することができちゃいます。

スクリーンショット 2020-07-09 11.17.48.png

ViewController.swift
import UIKit
import MapKit

class ViewController: UIViewController {

    @IBOutlet weak var mapView: MKMapView!

    // 国土地理院が提供する色別標高図のURL
    // ここを変えるだけで、様々な地図データを表示できる!
    private let tileOverlay = MKTileOverlay(urlTemplate: "https://cyberjapandata.gsi.go.jp/xyz/relief/{z}/{x}/{y}.png")

    override func viewDidLoad() {
        super.viewDidLoad()

        mapView.delegate = self
        mapView.addOverlay(tileOverlay, level: .aboveLabels)
    }
}

extension ViewController: MKMapViewDelegate {
    func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
        return MKTileOverlayRenderer(overlay: overlay)
    }
}

透過率を付けて重ね合わせたい場合は MKOverlayRendereralpha 値を調整します。

    @IBAction func sliderDidChange(_ slider: UISlider) {
        if let renderer = mapView.renderer(for: tileOverlay) {
            renderer.alpha = CGFloat(slider.value)
        }
    }

治水地形分類図 などは昨今の水害への対応に何かに活用できるのではないかと。

スクリーンショット 2020-07-09 11.35.06.png

各データには利用規約がありますので、利用の際には注意を払っておくと良さそうです。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4