大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

SwiftUI沼でゆっくり浸る 郵便番号表示アプリから地図マップへ

著者:川上洋
公開日:2022/08/31
最終更新日:2022/08/31
カテゴリー:技術情報 雑記
タグ:

こんにちは、川上です。

Myの郵便番号表示アプリで、郵便番号やその住所名のList表示までが、概ね、目的の形ができてました。
が、これまででも良かったけど、「だから、何?」と、なんか途中トンボのようで、何処へ飛ばすかなぁ。。。でした。
んで、取得した郵便番号やその住所名データを飛ばして、対応地図位置をSpotできたら、締まりがいいなぁ、、とのことで、標準内臓アプリの「マップ」アプリに”郵便番号”で連携しました。
で、「マップ」アプリだけなら、あれなんで、「Google Map」」アプリも連携して、動作してみました。
「マップ」アプリと「Googe Map」アプリの”郵便番号”で連携動作の差異がありました。
・「マップ」アプリ
→ 郵便番号の標準住所位置?のSpot
・「Googe Map」アプリ
→   郵便番号の標準住所位置?のSpotと標準住所エリアの区域の表示
でした。

また、”郵便番号”のDrag&Dropを「マップ」アプリや「メモ」アプリには飛ばせたけど、「Google Map」」アプリには、飛ばせんでした。(当然といえば当然かもね。。)
尚、「Google Map」アプリを使うのは、info.plistに使用切符が必要でした。

前掲のText分の続き・・

 
Text(hitarry[hitidx].addr_full)
    .frame(maxWidth:.infinity,  alignment:.leading)
    // === List -> Map
    .onTapGesture {
        let urlString:String! = selection == 0
        // == Get Set Apple Map のURL
        ?  vm.getMapUrl(hitarry[hitidx].poststr)
        // == Get Set Apple Map ,Google MapのURL
        : vm.getMapUrl_GooglOrAppleMap(hitarry[hitidx].poststr)
     
        // == Mapアプリの起動 ===
        if let url = URL(string: urlString) {
            UIApplication.shared.open(url)
        }
    } // == onTapGesture

    // === SpliterView -> drag -> map
    .onDrag {
        //dragTextを元にNSProviderに連携
        provider.registerDataRepresentation(forTypeIdentifier: UTType.utf8PlainText.identifier as String, visibility: .all) { (completion) -> Progress? in
          completion(hitarry[hitidx].poststr.data(using: .utf8)
                       , nil)
            return nil
        }
        return provider
    } // == onDrag

VM内では、

 // == Get Set Apple Map のURL
    func getMapUrl(_ postNumStr:String) ->String! {
        let urlString: String!
        urlString = "http://maps.apple.com/?q="
        + "\(String(describing: postNumStr))"
        return urlString
    } 

    // == Get Set Apple Map ,Google MapのURL
    func getMapUrl_GooglOrAppleMap(_ postNumStr:String) ->String! {

        let urlString: String!
        if UIApplication
            .shared.canOpenURL(URL(string:"comgooglemaps://")!) {
            urlString = "comgooglemaps://?q="
            + "\(String(describing: postNumStr))"
        }
        else {
            urlString = "http://maps.apple.com/?q="
            + "\(String(describing: postNumStr))"
        }
        return urlString
    } 

ちびりちびりで書いてた郵便番号表示アプリのMy備忘ログは、これにて一応でEOFです。
ではでは。

    上に戻る