Mapの使い方
Mapの使い方とは?
地図を表示して、自分の居場所に近いお店を表示する。
iosでそんなアプリを作るなら、mapkitの使い方について知っておく必要があります。
SwiftUIでアプリを作る場合、橋渡しをしたり。
UIKitの使い方を身に着けたりする必要があります。
【ポイント】
MKMapView UIViewRepresentable MKAnnotation bodyは消す |
Mapkitとは
地図をWebサイトに埋め込むためのJavaScript APIです。
アプリのウィンドウにマップを埋め込める
東京駅だけに、注釈を入れる事ができる
ポイントを追加したり
ルート検索
ルート案内などが実装できます。
外観の大きさなどもカスタマイズできます。
【注意点】
Mapkitは古いので、swiftuiの
var body: some View と書いてあると表示できない。
var body: some Viewは「swiftui」のViewが関係しているらしい。
MKMapView とは
埋め込みできる地図の事。「クラス」です。
クラスと構造体があり、クラスで書いてあるという事は、古くからあると認識できます。
出来る事
マップを表示できる ユーザーが操作する事ができる 注釈、表示のサイズを変える 中心点を決める ズームレベルを設定する 指の動きに合わせて、拡大、縮小できるの |
公式ドキュメントを見ると
class MKMapView : UIView |
と書いてあります。これで、UIViewに準拠した、クラスである事が分かります。
公式ドキュメントのサンプルソース
MapView.swift にて作成
import SwiftUI
struct MapView: UIViewRepresentable {//橋渡しをするプロトコル
func updateUIView(_ uiView: MKMapView, context: Context) {
let span = MKCoordinateSpan(latitudeDelta: 2.0, longitudeDelta: 2.0) struct MapView_Previews: PreviewProvider {//プレビュー表示の部分 |
struct MapView: UIViewRepresentable {//橋渡しをするプロトコル |
空の地図を作り、古いキットを使えるようにする。
: UIViewRepresentableはプロトコル。古いMapKitとの橋渡しをする。
func updateUIView(_ uiView: MKMapView, context: Context)//ユーザー操作によってアップデートされる部分
【deve】
アプリから、マップコンテンツを操作。 ズームレベルの設定 中心などを決められる。 注釈などをつける事ができる。 マップの明るさを指定できる。 フリックやジェスチャーも使える マップのスクロールもできます。 アニメーションの設定(pokemonGOみたいな事) |
MKAnnotation とは
func updateUIView(_ uiView: Self.UIViewType, context: Self.Context) |
ユーザーがタップしたりすると、ビューを更新してくれる。
MKAnnotation とは
MKAnnotation
マップに注釈を付ける機能
すでに地図には、たくさんの情報が入っているので、Viewを新しく作り、そこで注釈を管理します。
注釈専用のViewを作って表示するようなものです。
【公式ドキュメント】
class MKPointAnnotation : MKShape |
クラスで、MKShapeを継承しているようですね。
let MyPin = MKPointAnnotation()//まずインスタンス化 myPin.coordinate = cordinagte myPin.title = "東京タワーです" |
という書き方をする
初期位置を決める
初期位置にピンを表示したい場合
CLLocationCoordinate2DMake
MKCoordinateRegion・・・地図をどのような縮尺で表示するか?を指定できる
【公式ドキュメント】
CLLocationCoordinate2D CLLocationCoordinate2DMake(CLLocationDegrees latitude, CLLocationDegrees longitude); |
これは、よくわかりません
【使い方】
let latitude = 35.685375, longitude = 139.752848 let region = MKCoordinateRegion(center: coordinate, span: span) uiView.setRegion(region, animated: true) |
func updateUIView(_ uiView: MKMapView, context: Context){ } |
上記は、ユーザーが動かすたびに、勝手に地図をリロードしてくれる。
【参照】
地図アプリ作成してみた>>
UIViewRepresentable とは
プロトコル。の事です。橋渡しに使います。
古いUIKitと、新しいSwiftUIをつなげるおまじないですかね。
Representable(表現できる)という意味
protocol UIViewRepresentable : View where Self.Body == Never |
struct MapView: UIViewRepresentable { func makeUIView(context: Context) -> MKMapView{ return MKMapView() }
func updateUIView(_ uiView, context: Context){ } } |
上記は、橋渡しをするコードです。
SwiftUIとUIKitを橋渡して、利用できるようにしています。
「MapView」の部分は好きな名前で大丈夫です。 このように書くことで
MKMapViewのクラスが、SwiftUIのフレームワークで利用できるようになります。
新車に古い部品を入れているようなものです。古い部品でも、やはり便利なので、利用するみたいですね。
新しく、書き直してくれたらいいのに・・・
と思う今日この頃ですが。
【参照】
Viewプロトコルとは
プロトコルは、コンピューター同士が通信をする時の規格や手順の事です。
TCP/IPプロトコルなどが有名ですかね?
通信のお約束。みたいなものです。
struct ContentView: View { var body: some View { Text("Turtle Rock") .font(.title) } } |
構造体の名前は「ContentView」
これが、Viewプロトコルに属している。という意味になります。
iphoneで表示するときの、お約束。みたいなものです。
「:View」を削除するとエラーになります。
bodyとは
struct ContentView: View { var body: some View{ Text("Turtle Rock") .font(.title) } } |
bodyプロパティです。中に書かれているviewを表示します。
ちなみに、戻り値が「 some View」です。
ここは、難しいので、後で覚えた方がいいようです。
リバースジェネリクス という概念を知ると、理解できるようです。
【参照】
参照サイト
参照したサイトについてご紹介します。とても分かりやすく情報がまとまっていますので
ぜひ参考にしてみてください。
プロパティ(ストアドプロパティとコンピューテッドプロパティ)
大変申し訳ありませんが、当社ではサービスの質を落とさないために、月の契約は5件までとさせていただいております。 契約をお待ちいただく可能性もございますので、ご了承のほどよろしくお願いいたします
この記事を読んだ人は、こんな記事も読んでいます
SEO対策の基本 外部要因とは?
SEO対策の基本的である、外部要因とは何か?
SEO対策をするなら絶対に知っておきたい、基本知識です。
売れるサイトを作るのに知って起きたい知識
サーチエンジンマーケティングという言葉をご存知でしょうか?
ホームページで商品やサービスを売る時に知っておきたいマーケティング
についてご紹介いたします。
SEO対策をする5つのメリットとは?
なぜ上位表示させることが大事なのか?なぜSEO対策をする必要があるのか
についてご紹介させていただきます。
SEO対策の内部要因とは?
上位表示させるためには、内部要因について知っておくことも大事です。
キーワードを上位表示させるために必要なのは、ソースコードを最適化することです
内部要因の対策について知りたい方はこちらへ
キーワード対策をする前に
そのキーワード対策。ちょっと待ってください。
そのまま対策をすると、必ずお金を損してしまいます。個人事業主や中小企業は
そんな大きなキーワードで対策をしてはいけません。
広告費用が高くなる本当の理由とは?
売れないサイトに集めていませんか?広告費用がかかるわりには
お問い合わせが少ない・・・と感じる方は多いはずです。
購入率の悪いサイトに集客をしている可能性があります。