Mar*_*rty 10 iphone mkreversegeocoder
当我运行我正在构建的gps应用程序时,我会随机获取此信息.它不会每次都发生,传入的坐标总是有效的(我会记录它们).这些地方有文件吗?
编辑:
CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(locManager.location.coordinate.latitude, locManager.location.coordinate.longitude);
geocoder1 = [[MKReverseGeocoder alloc] initWithCoordinate:coord];
geocoder1.delegate = self;
[geocoder1 start];
Run Code Online (Sandbox Code Playgroud)
然后大约一半时间它返回错误.如果出现错误,我尝试释放并重新分配地理编码器,但这没有帮助.唯一能做的就是重新启动应用程序.
Cla*_*och 11
在MapKit框架中的"MKTypes.h"中,定义了以下内容:
Map Kit框架的错误常量.
enum MKErrorCode {
MKErrorUnknown = 1,
MKErrorServerFailure,
MKErrorLoadingThrottled,
MKErrorPlacemarkNotFound,
};
Run Code Online (Sandbox Code Playgroud)
...
MKErrorPlacemarkNotFound
找不到指定的地标.
这听起来像你在代码中引用了一些未知的地标?或者可能是Google没有您要传递的位置的名称 - 但坐标可能有效.
我最近遇到并解决了这个问题.在我的情况下,当Apple Map找不到查询的任何结果时,它有时会抛出这个"MKErrorDomain = 4"错误.所以我最终只是将其视为"未找到结果".
找到这个是很费劲的,MapKit需要一个更好的错误处理系统.
我已经反复遇到这个错误,并且无法弄清楚如何让它停止;但我最终找到了一个解决整个问题的方法,效果很好,只需要多做一点工作:根本不要使用Apple的MKReverseGeocoder——相反,直接调用Google的反向地理编码API(这显然是相同的服务)这MKReverseGeocoder在幕后进行)。您可以返回 JSON 或 XML(您的偏好),然后您必须对其进行解析,但这并不太难。
例如,由于我的应用程序正在使用ASIHTTPRequest,因此它看起来像这样(尽管使用 Apple 的本机 API(例如 )也很容易做到这一点NSURLConnection):
#pragma mark -
#pragma mark CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
// Be careful: My code is passing sensor=true, because I got the lat/long
// from the iPhone's location services, but if you are passing in a lat/long
// that was obtained by some other means, you must pass sensor=false.
NSString* urlStr = [NSString stringWithFormat:
@"http://maps.googleapis.com/maps/api/geocode/xml?latlng=%f,%f&sensor=true",
newLocation.coordinate.latitude, newLocation.coordinate.longitude];
NSURL* url = [NSURL URLWithString:urlStr];
self.reverseGeocoderRequest = [ASIHTTPRequest requestWithURL:url];
self.reverseGeocoderRequest.delegate = self;
[self.reverseGeocoderRequest startAsynchronous];
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,Google 的 API 也有规则,就像 Apple 的一样。请务必阅读文档,尤其是有关配额的文档。
| 归档时间: |
|
| 查看次数: |
7050 次 |
| 最近记录: |