我正在尝试使用NSURL将用户发送到带有我的数据库地址的地图。我想在UIButton中的一个动作中做到这一点,就像我对电话,邮件和网络一样。像这样;
- (IBAction)restActionWeb:(UIButton *)sender {
NSString *urlString = [NSString stringWithFormat:@"http://%@",[restDetails objectForKey:@"Web"] ];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
}
对于像“123 My Road,MyTown,CA 95472,USA”这样的街头地址是否可以这样做?
在没有任何运气的情况下尝试了一些变体;
- (IBAction)restActionFind:(UIButton *)sender {
// Merge street + zip
NSMutableString *tempAdress = [NSMutableString string];
[tempAdress appendString:@"address://"];
[tempAdress appendFormat:@"%@",[restDetails objectForKey:@"Street"]];
[tempAdress appendFormat:@", %@",[restDetails objectForKey:@"Zip"]];
[tempAdress appendFormat:@", %@",[restDetails objectForKey:@"City"]];
[tempAdress appendFormat:@", USA"]; // Have this limitation in future?
self.restFindLabel.text = tempAdress;
// CHECK don't work, whats the url schema for address?
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:tempAdress]];
}
希望它能够像您在某些文本字段中检测到的地址一样工作,然后进入具有该地址的地图并显示它。
我认为使用计划B是一种“过度杀伤”:使用CoreLocation +以这种方式发送地址。它还利用了电池。我的意思是,我已经知道我的dB中的地址,只是希望地图显示它。
有关此问题的任何建议或提示?谢谢! : - )
答案 0 :(得分:0)
你试过这个吗?
NSString *stringURL = @"http://maps.google.com/maps?q=123+My+Road,+MyTown,+CA+95472,+USA"];
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
这意味着使用http://
方案而不是address://
并依靠操作系统来理解它是一张地图。可能在iOS6上不能正常工作,但它应该在iOS5上运行。
(source)