투케이2K

376. (ios/swift5) geo: 지도 표시 스키마 명칭 사용해 http Map 열기 수행 실시 본문

IOS

376. (ios/swift5) geo: 지도 표시 스키마 명칭 사용해 http Map 열기 수행 실시

투케이2K 2023. 11. 12. 08:36

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [Map 지도 이동 수행]
    // -----------------------------------------------------------------------------------------
    func goMapIntent(_url : String) {
        
        /*
        // -----------------------------------------
        [goMapIntent 메소드 설명]
        // -----------------------------------------
        1. geo: 스키마 명칭을 파싱해 Map 맵 지도 이동 수행
        // -----------------------------------------
        2. 호출 예시 : self.goMapIntent(_url: "geo:37.563666, 126.975693")
        // -----------------------------------------
        3. 참고 : AOS 같은 경우는 geo: 스키마 명칭 그대로 사용해 Map 열기 수행이 가능, IOS 도 같은 파라미터를 받아서 데이터 파싱 후 Map 열기 수행
        // -----------------------------------------
        */
        
        // [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
        DispatchQueue.main.async {
            
            // [사전 인풋 값 널 데이터 체크 수행 실시]
            if _url != nil && _url.count>0 && _url != "" && _url.hasPrefix("geo:") {
            }
            else {
                S_Log._D_(description: "Map 지도 이동 실패", data: [
                    "error :: 사전 인풋 데이터 체크 에러",
                    "_url :: \(_url)"
                ])

                // [리턴 종료]
                return
            }
            
            // [geo: 문자열 제거]
            var link = "http://maps.apple.com/?ll=\(_url.replacingOccurrences(of: "geo:", with: ""))"
            link = link.replacingOccurrences(of: " ", with: "")
            
            // [로그 출력 실시]
            S_Log._D_(description: "Map 지도 이동 수행", data: [
                "_url :: \(link.trimmingCharacters(in: .whitespacesAndNewlines))"
            ])
            
            // [외부 링크 이동 수행 실시]
            UIApplication.shared.open(URL(string: link.trimmingCharacters(in: .whitespacesAndNewlines))!, options: [:])
        }
    }

[결과 출력]

 

반응형
Comments