Programing

내 고유 애플리케이션 내에서 Google Maps iPhone 애플리케이션을 시작하려면 어떻게해야합니까?

lottogame 2020. 11. 7. 08:57
반응형

내 고유 애플리케이션 내에서 Google Maps iPhone 애플리케이션을 시작하려면 어떻게해야합니까?


애플 개발자 용 문서는 (링크 지금 죽었) 설명 당신이 웹 페이지의 링크를 위치하게 한 후, 아이폰, 시작됩니다 아이폰에 기본으로 제공되는 Google지도 응용 프로그램에서 모바일 사파리를 사용하는 동안을 클릭합니다.

연락처에서 주소를 탭하면지도가 시작되는 것과 같은 방식으로 내 기본 iPhone 애플리케이션 (예 : Mobile Safari를 통한 웹 페이지가 아님) 내에서 특정 주소로 동일한 Google지도 애플리케이션을 시작하려면 어떻게해야합니까?

참고 : 이것은 장치 자체에서만 작동합니다. 시뮬레이터에는 없습니다.


iOS 5.1.1 이하 openURL의 경우 UIApplication. 정상적인 iPhone 마법 URL 재 해석을 수행합니다. 그래서

[someUIApplication openURL:[NSURL URLWithString:@"http://maps.google.com/maps?q=London"]]

Google지도 앱을 호출해야합니다.

iOS 6에서는 Apple의 자체지도 앱을 호출하게됩니다. 이를 MKMapItem위해 표시 할 위치 개체를 구성한 다음 openInMapsWithLaunchOptions메시지 를 보냅니다 . 현재 위치에서 시작하려면 다음을 시도하십시오.

[[MKMapItem mapItemForCurrentLocation] openInMapsWithLaunchOptions:nil];

이를 위해 MapKit에 연결해야합니다 (그리고 위치 액세스를 요구할 것입니다).


바로 그거죠. 이를 달성하는 데 필요한 코드는 다음과 같습니다.

UIApplication *app = [UIApplication sharedApplication];
[app openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=London"]];

이후 문서에 따라 당신이 sharedApplication를 호출하지 않는 한, UIApplication는 응용 프로그램 위임에서만 사용할 수 있습니다.


특정 좌표에서 Google지도를 열려면 다음 코드를 시도하세요.

NSString *latlong = @"-56.568545,1.256281";
NSString *url = [NSString stringWithFormat: @"http://maps.google.com/maps?ll=%@",
[latlong stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

latlong 문자열을 CoreLocation의 현재 위치로 바꿀 수 있습니다.

( "z") 플래그를 사용하여 확대 / 축소 수준을 지정할 수도 있습니다. 값은 1-19입니다. 예를 들면 다음과 같습니다.

[[UIApplication sharedApplication] openURL : [NSURL URLWithString : @ " http://maps.google.com/maps?z=8 "]];


이제 https://developers.google.com/maps/documentation/ios/urlscheme에 문서화 된 App Store Google Maps 앱도 있습니다.

따라서 먼저 설치되었는지 확인합니다.

[[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"comgooglemaps://"]];

그런 다음 조건부 http://maps.google.com/maps?q=comgooglemaps://?q=.


다음은지도 링크에 대한 Apple URL 체계 참조입니다. https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html

유효한 맵 링크를 만드는 규칙은 다음과 같습니다.

  • 도메인은 google.com이어야하며 하위 도메인은 maps 또는 ditu 여야합니다.
  • 쿼리에 사이트가 키로 포함되고 로컬이 값으로 포함 된 경우 경로는 /, / maps, / local 또는 / m이어야합니다.
  • 경로는 / maps / * 일 수 없습니다.
  • 모든 매개 변수가 지원되어야합니다. 지원되는 매개 변수 목록은 표 1을 참조하십시오 **.
  • 값이 URL 인 경우 매개 변수는 q = *가 될 수 없습니다 (KML이 선택되지 않음).
  • 매개 변수는 view = text 또는 dirflg = r을 포함 할 수 없습니다.

** 지원되는 매개 변수 목록은 위의 링크를 참조하십시오.


iOS 10을 사용하는 경우 Info.plist에 쿼리 체계를 추가하는 것을 잊지 마십시오.

<key>LSApplicationQueriesSchemes</key>
<array>
 <string>comgooglemaps</string>
</array>

Objective-c를 사용하는 경우

if ([[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"comgooglemaps:"]]) {
    NSString *urlString = [NSString stringWithFormat:@"comgooglemaps://?ll=%@,%@",destinationLatitude,destinationLongitude];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
    } else { 
    NSString *string = [NSString stringWithFormat:@"http://maps.google.com/maps?ll=%@,%@",destinationLatitude,destinationLongitude];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:string]];
    }

Swift 2.2를 사용하는 경우

if UIApplication.sharedApplication().canOpenURL(NSURL(string: "comgooglemaps:")!) {
    var urlString = "comgooglemaps://?ll=\(destinationLatitude),\(destinationLongitude)"
    UIApplication.sharedApplication().openURL(NSURL(string: urlString)!)
}
else {
    var string = "http://maps.google.com/maps?ll=\(destinationLatitude),\(destinationLongitude)"
    UIApplication.sharedApplication().openURL(NSURL(string: string)!)
}

Swift 3.0을 사용하는 경우

if UIApplication.shared.canOpenURL(URL(string: "comgooglemaps:")!) {
    var urlString = "comgooglemaps://?ll=\(destinationLatitude),\(destinationLongitude)"
    UIApplication.shared.openURL(URL(string: urlString)!)
}
else {
    var string = "http://maps.google.com/maps?ll=\(destinationLatitude),\(destinationLongitude)"
    UIApplication.shared.openURL(URL(string: string)!)
}

전화 질문의 경우 시뮬레이터에서 테스트하고 있습니까? 이것은 장치 자체에서만 작동합니다.

또한 openURL은 실행중인 기기가 기능을 지원하는지 확인하는 데 사용할 수있는 bool을 반환합니다. 예를 들어 iPod Touch에서는 전화를 걸 수 없습니다. :-)


이 메서드를 호출하고이 Answer 와 같은 .plist 파일에 Google Maps URL Scheme을 추가하면됩니다 .

스위프트 -4 :-

func openMapApp(latitude:String, longitude:String, address:String) {

    var myAddress:String = address

    //For Apple Maps
    let testURL2 = URL.init(string: "http://maps.apple.com/")

    //For Google Maps
    let testURL = URL.init(string: "comgooglemaps-x-callback://")

    //For Google Maps
    if UIApplication.shared.canOpenURL(testURL!) {
        var direction:String = ""
        myAddress = myAddress.replacingOccurrences(of: " ", with: "+")

        direction = String(format: "comgooglemaps-x-callback://?daddr=%@,%@&x-success=sourceapp://?resume=true&x-source=AirApp", latitude, longitude)

        let directionsURL = URL.init(string: direction)
        if #available(iOS 10, *) {
            UIApplication.shared.open(directionsURL!)
        } else {
            UIApplication.shared.openURL(directionsURL!)
        }
    }
    //For Apple Maps
    else if UIApplication.shared.canOpenURL(testURL2!) {
        var direction:String = ""
        myAddress = myAddress.replacingOccurrences(of: " ", with: "+")

        var CurrentLocationLatitude:String = ""
        var CurrentLocationLongitude:String = ""

        if let latitude = USERDEFAULT.value(forKey: "CurrentLocationLatitude") as? Double {
            CurrentLocationLatitude = "\(latitude)"
            //print(myLatitude)
        }

        if let longitude = USERDEFAULT.value(forKey: "CurrentLocationLongitude") as? Double {
            CurrentLocationLongitude = "\(longitude)"
            //print(myLongitude)
        }

        direction = String(format: "http://maps.apple.com/?saddr=%@,%@&daddr=%@,%@", CurrentLocationLatitude, CurrentLocationLongitude, latitude, longitude)

        let directionsURL = URL.init(string: direction)
        if #available(iOS 10, *) {
            UIApplication.shared.open(directionsURL!)
        } else {
            UIApplication.shared.openURL(directionsURL!)
        }

    }
    //For SAFARI Browser
    else {
        var direction:String = ""
        direction = String(format: "http://maps.google.com/maps?q=%@,%@", latitude, longitude)
        direction = direction.replacingOccurrences(of: " ", with: "+")

        let directionsURL = URL.init(string: direction)
        if #available(iOS 10, *) {
            UIApplication.shared.open(directionsURL!)
        } else {
            UIApplication.shared.openURL(directionsURL!)
        }
    }
}

Hope, this is what you're looking for. Any concern get back to me. :)


"g" change to "q"

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=London"]]

If you're still having trouble, this video shows how to get "My maps" from google to show up on the iphone -- you can then take the link and send it to anybody and it works.

http://www.youtube.com/watch?v=Xo5tPjsFBX4


For move to Google map use this api and send destination latitude and longitude

NSString* addr = nil;
     addr = [NSString stringWithFormat:@"http://maps.google.com/maps?daddr=%1.6f,%1.6f&saddr=Posizione attuale", destinationLat,destinationLong];

NSURL* url = [[NSURL alloc] initWithString:[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];

If you need more flexabilty than the Google URL format gives you or you would like to embed a map in your application instead of launching the map app there is an example found at https://sourceforge.net/projects/quickconnect.


If you need more flexibility than the Google URL format gives you or you would like to embed a map in your application instead of launching the map app here is an example.

It will even supply you with the source code to do all of the embedding.


iPhone4 iOS 6.0.1 (10A523)

For both Safari & Chrome. Both latest version up till now (2013-Jun-10th).

The URL scheme below also work. But in case of Chrome only works inside the page doesn't work from the address bar.

maps:q=GivenTitle@latitude,longtitude


**Getting Directions between 2 locations**

        NSString *googleMapUrlString = [NSString stringWithFormat:@"http://maps.google.com/?saddr=%@,%@&daddr=%@,%@", @"30.7046", @"76.7179", @"30.4414", @"76.1617"];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:googleMapUrlString]];

Working Code as on Swift 4:

Step 1 - Add Following to info.plist

<key>LSApplicationQueriesSchemes</key>
<array>
<string>googlechromes</string>
<string>comgooglemaps</string>
</array>

Step 2 - Use Following Code to Show Google Maps

    let destinationLatitude = "40.7128"
    let destinationLongitude = "74.0060"

    if UIApplication.shared.canOpenURL(URL(string: "comgooglemaps:")!) {
        if let url = URL(string: "comgooglemaps://?ll=\(destinationLatitude),\(destinationLongitude)"), !url.absoluteString.isEmpty {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        }
    }else{
        if let url = URL(string: "http://maps.google.com/maps?ll=\(destinationLatitude),\(destinationLongitude)"), !url.absoluteString.isEmpty {
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        }
    }

참고URL : https://stackoverflow.com/questions/30058/how-can-i-launch-the-google-maps-iphone-application-from-within-my-own-native-ap

반응형