地图链接捕捉回用户位置

时间:2017-04-28 12:14:14

标签: ios objective-c

我一直在讨论这个问题:在我的应用程序中,我使用一个链接在特定坐标处打开Apple Maps应用程序。然而问题是,当我的应用程序和地图应用程序第一次打开时,地图会快速回到用户的位置。我已经阅读了十几个涉及这个主题的问题,但他们都使用mapKit而不是共享应用程序,因此对我没有多大帮助。

我使用UIApplication对象打开应用。我的完整代码:

UIApplication *maps = [UIApplication sharedApplication];
    float latitude = 52.379189;
    float longitude = 4.899431;
    NSURL *mapsURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://maps.apple.com/?sll=%f,%f&z=10", latitude, longitude]];
    if ([maps canOpenURL:mapsURL]) {
        [maps openURL:mapsURL options:@{} completionHandler:nil];
    } else {
        NSLog(@"Can't open the maps app");
    }

有关地图链接约定的更多信息,请检查this link

有关如何解决此问题的任何想法?我应该删除此方法并使用mapKit吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

发现它!我在MapKit类中使用了构建。我现在使用这段代码:

float latitude = 52.379189;
float longitude = 4.899431;

MKPlacemark *location = [[MKPlacemark alloc] initWithCoordinate:CLLocationCoordinate2DMake(latitude, longitude)];
MKMapItem *maps = [[MKMapItem alloc] initWithPlacemark:location];
[maps setName:@"Site x"];
[maps openInMapsWithLaunchOptions:nil];

另一个好处是您可以指定位置的名称,并且在地图应用程序中,您可以轻松地指向该位置。

答案 1 :(得分:0)

请尝试使用此url格式,可能缺少ll参数:

let theApp = UIApplication.shared
let latitude = 52.379189
let longitude = 4.899431
let urlString = String(format: "http://maps.apple.com/?sll=%f,%f&ll=%f,%f&z=10", latitude, longitude, latitude, longitude)
let url = URL(string: urlString)!

if theApp.canOpenURL(url)
{
    theApp.open(url, options: [:], completionHandler: nil)
} else
{
    print("Can't open the maps app")
}