我有一个应用程序需要具有类似的搜索功能,如Apple"地图"应用程序(包括在iPhone,iPod Touch和iPad中).
有问题的功能应该不是一件很难的事情,但我真的对如何在搜索栏中输入街道地址,然后获取该地址的坐标或者可以帮助我实际移动地图的东西毫无头绪在那个地方居中.
我的意思是,我需要查询什么,Apple是否提供"地址搜索API方法"?或者我需要直接使用谷歌地图API?
我很想知道应该怎么做.
当我运行我正在构建的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)
然后大约一半时间它返回错误.如果出现错误,我尝试释放并重新分配地理编码器,但这没有帮助.唯一能做的就是重新启动应用程序.
我正在使用MKReverseGeocoder,但我一直得到reverseGeocoder:didFailWithError:"操作无法完成.(MKErrorDomain错误4.)".我正在传递地理编码器MKUserLocation注释的坐标.这个错误意味着什么?我该如何避免它?
我正在开发使用谷歌地图的移动应用程序,我想通过设备纬度和经度查找用户当前地址(反向地理编码)。
谷歌有一些限制,一旦超出它就会向我收费。现在我正在寻找OpenStreetMap,它是开放供公众使用的。我可以使用反向地理编码。
例如http://nominatim.openstreetmap.org/reverse?format=xml&lat=20&lon=71&zoom=18
我的问题是,1)。每天拨打这些电话有限制吗?2)。我需要在某个地方注册吗?3)。还有其他替代方案吗?
提前致谢
目前我正在开发一个iPhone应用程序,我必须显示用户当前使用Mapkit Framework的城市和位置.当我构建应用程序时,它工作正常并向我显示确切的城市细节.但是现在当我尝试构建应用程序再次应用程序在我的日志中显示以下错
/SourceCache/ProtocolBuffer_Sim/ProtocolBuffer-26/Runtime/PBRequester.m:523服务器返回错误:503
reverseGeocoder:didFailWithError:Error Domain = PBRequesterErrorDomain Code = 6001"无法完成操作.(PBRequesterErrorDomain error 6001.)"
是否有任何机构面临同样的问题,我该如何解决?
我有一个应用程序,表现出间歇性崩溃.崩溃日志显示的堆栈跟踪对我来说很难破译,因此希望其他人看到这一点并指出我正确的方向.
基本上,应用程序在启动时执行反向地理编码请求,以显示用户在标签中的位置.另外,我为特定的API调用执行另一个反向地理编码请求.
发生的事情是有时这个MKReverseGeocoder需要很长时间才能回来.最终我假设我会收到一个失败的回调,有时我会这样做,但在此之前可能需要几分钟.
由于API调用也发出了另一个MKReverseGeocoder请求,我想也许多个并发调用存在问题?
这是我的堆栈跟踪:
Program received signal: “EXC_BAD_ACCESS”.
(gdb) backtrace
#0 0x30c237a0 in -[MKPlacemark _mapkit_cache_heapTime] ()
#1 0x30bffe60 in compareTimes ()
#2 0x32403b24 in CFBinaryHeapAddValue ()
#3 0x30c0030c in -[MKCache setObject:forKey:] ()
#4 0x30c2aa48 in -[MKReverseGeocodeCache addPlacemark:forCoordinate:] ()
#5 0x30c2251c in -[MKReverseGeocoder requester:didReceiveResponse:forRequest:] ()
#6 0x3388cc1c in -[PBRequester _tryParseData] ()
#7 0x3388b288 in -[PBRequester connection:didReceiveData:] ()
#8 0x337490ce in -[NSURLConnection(NSURLConnectionReallyInternal) sendDidReceiveData:originalLength:] ()
#9 0x33748ff0 in _NSURLConnectionDidReceiveData ()
#10 0x30899ff8 in URLConnectionClient::_clientDidReceiveData ()
#11 0x3088ca3e in URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload () …
Run Code Online (Sandbox Code Playgroud) 从iOS 4.3(GM Seed 10M2518)开始,我在使用时遇到了崩溃MKReverseGeocoder
.reverseGeocoder:didFailWithError:
经常被这样的错误调用:
Error Domain=NSURLErrorDomain Code=-1011 "The operation couldn’t be completed. (NSURLErrorDomain error -1011.)" UserInfo=0x339900 {PBHTTPStatusCode=503}
该应用程序往往会在这些时刻崩溃.在以前的iOS版本中并非如此.
发生了什么事?
我见过各种语言的许多所谓的"反向地理编码"库; 所有这些都依赖于通过REST或类似方法调用外部提供程序.但是,如果每秒必须处理数千个请求,则无法调用REST提供程序.
另一方面,问题应该很容易解决 - 基于CSV的数据库可以免费获得这些信息.问题是编写高效且经过良好测试的内存中搜索实现的时间和成本,而不是下载或购买现有的搜索实现.
经过很多寻找后我找不到任何东西,但我无法相信不可能有一个.是否有预先编写的库可以执行此操作?
这个问题:
是最接近的,但基本上表明如何编写解决方案,而不是现成的任何东西.但每个人都必须使用一些库.每天十几个人一定有这个问题.
我想在地图上放置"别针".我有一个用户位置.
现在我正在从互联网上下载地点信息.对于每一个我都获得经纬度.
我想将这些全部放在地图上.我知道我必须使用反向地理编码器,但我不完全确定如何做到这一点.另外我读到的地方你一次只能做一次,所以我不知道如何把我的所有结果都拿到地图上.
谢谢你的帮助.:)
汤姆
我正在研究一个使用MKReverseGeocoder转换lat,long到地址的例子.但是当我收到数据并尝试获得结果时,我收到的字符串如下:
NSString *street = [geocoder.addressDictionary objectForKey:@"Street"];
Run Code Online (Sandbox Code Playgroud)
我收到了这样一个地址:"Ng\U00f5 381 Nguy\U1ec5n Khang".
我怎样才能将其转换为unicode格式化的字符串?
提前致谢.