几乎所有主要新闻媒体都报道苹果将停止在iOS6中使用谷歌地图服务.我认为没有人真正知道这些变化究竟是什么,什么时候推出,苹果将如何实施它们以及Google或Apple是否会开始为其服务收费.由于存在这些不确定因素,我无法就是否应该发布一个我已经工作了一年多的新公共汽车追踪器应用程序做出明智的决定.我已经设定了2012年6月15日的最初硬截止日期.我知道最好的办法是等待,看看将会发生什么变化以及Apple将如何实施这些变化.但我有点不耐烦并且强调要推迟发布日期,因为任何进一步的延迟都会以非常重要的方式影响我的许多其他计划.
有关该应用的更多信息:
它根据从第三方运输机构的API获得的信息提供实时公共交通信息.它在很大程度上取决于iOS MapKit框架和iOS位置服务,以实时显示给定路径上的总线的当前地理位置,并在两个位置之间提供传输信息.据Apple称,iOS MapKit框架使用Google服务提供地图数据.某些功能会调用Google地图应用以提供到最近站点的中转计划和转弯路线指示.
我的问题:
如果谣言成真,你认为Apple肯定会实施任何改变而不会影响已经使用当前MapKit框架的应用程序吗?我应该准备什么样的潜在问题?
在IOS 6之前,我使用此URL方案打开本机地图应用程序,并查找从用户当前位置到我创建的地址的路线.
http://maps.google.com/maps?daddr="+地址+"&saddr =当前+位置
这很好用,但现在他们用IOS 6摆脱谷歌地图,我们必须检查他们所在的IOS版本,然后如果他们使用IOS 6.0或更高版本,则将它们引用到新的苹果地图网址方案.我们正在使用的新网址方案是......
http://maps.apple.com/maps?daddr="+地址+"&saddr =当前+位置
这是基于地图网址方案的新文档,可以在这里找到..
无论如何,我已经测试了一堆,它归结为新的苹果地图确实识别当前位置,就像谷歌地图一样.
有谁知道我怎么解决这个问题?
请记住,我正在构建一个带有电话间隙的html应用,因此使用本机代码将起始地址设置为当前位置对我没有帮助.
我在我的代码中实现了这个方法,以了解何时会发生接口方向更改:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
Run Code Online (Sandbox Code Playgroud)
我依靠这个来设置我的观点.在iOS 4或5中,当方向改变时,它会被正确调用.
在iOS 4中,它也会在控制器首次加载时被调用(无论方向是否发生变化,它都会在开始时以正确的方向调用一次).
问题是我在iOS 5中注意到这种情况不再发生了.当方向改变时调用该方法,而不是在控制器最初加载时调用.这对我来说是个问题,因为我依靠它来根据方向设置初始视图放置.
任何想法为什么这种行为改变?处理这个问题的最佳方法是什么?如果在iOS 5上,我应该检查viewDidLoad中的方向,然后手动调用willRotate和didRotate方法吗?这感觉有点像黑客.
感谢您提供的任何输入.
这是一个奇怪的问题:我的应用程序应该能够调用iOS中的内置地图(包括5.1和6).事实证明它在iOS6下工作得很好,但在iOS5.1下却没有.调用iOS6中的地图,并跟踪从saddr到daddr的路线,但是当我在iOS5中时,地图应用程序被调用,但只有一个引脚放在daddr上.由于某种未知原因,初始坐标(saddr)没有显示,也没有跟踪方向.
这是我的代码:
addr = [NSString stringWithFormat: @"maps://saddr=%f,%f&daddr=%f,%f", newLocation.coordinate.latitude, newLocation.coordinate.longitude, oldLatitude, oldLongitude];
NSURL *url = [NSURL URLWithString:addr];
[[UIApplication sharedApplication] openURL:url];
Run Code Online (Sandbox Code Playgroud)
我尝试将网址更改为"http://maps.google.com/something",但它会调用Safari而不是内置的地图应用.我注意到变量正在正确传递给URL.
有任何想法吗?
提前致谢!
我打开地图应用程序,从我的代码中显示从用户的当前位置到目标坐标的路线.我使用以下代码打开地图应用.我按下按钮时调用此代码.getCurrentLocation是一种返回最近更新位置的方法.
- (void)showDirectionsToHere {
CLLocationCoordinate2D currentLocation = [self getCurrentLocation]; // LINE 1
NSString* url = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f",
currentLocation.latitude,
currentLocation.longitude,
destCoordinate.latitude,
destCoordinate.longitude];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}
Run Code Online (Sandbox Code Playgroud)
这里[self getCurrentLocation]在LINE 1中用于CLLocationManager确定当前位置并返回该值.
注意:我还没有在LINE1中实现代码.我刚刚计划这样做.
我的问题是:
[self getCurrentLocation在openURL被叫之前返回当前位置吗?我对这些事情有点困惑.请指导我.谢谢.
ios5 ×3
ios6-maps ×3
ios ×2
iphone ×2
mapkit ×2
google-maps ×1
ios6 ×1
objective-c ×1
orientation ×1
url-scheme ×1