我一直在讨论这个问题:在我的应用程序中,我使用一个链接在特定坐标处打开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吗?提前谢谢!
答案 0 :(得分:1)
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")
}