【发布时间】:2015-03-20 13:05:37
【问题描述】:
我希望向我的应用程序添加功能,用户可以在其中输入位置名称,例如“伦敦”或“纽约”,我希望它可以在谷歌地图上搜索坐标。类似于谷歌地图应用中使用的方法。
获得坐标后,我可以添加标记 我只是不确定如何搜索用户输入以查找地点纬度和经度。
任何帮助,
谢谢
【问题讨论】:
标签: ios objective-c google-maps location latitude-longitude
我希望向我的应用程序添加功能,用户可以在其中输入位置名称,例如“伦敦”或“纽约”,我希望它可以在谷歌地图上搜索坐标。类似于谷歌地图应用中使用的方法。
获得坐标后,我可以添加标记 我只是不确定如何搜索用户输入以查找地点纬度和经度。
任何帮助,
谢谢
【问题讨论】:
标签: ios objective-c google-maps location latitude-longitude
为此,您需要使用 Google Geocoding 。它就像通过 HTTP 获取数据并解析它一样简单(它可以返回 JSON ) 检查这个apihttps://developers.google.com/maps/documentation/geocoding/?csw=1#GeocodingRequests
这样试试
- (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address
{
double latitude = 0, longitude = 0;
NSString *youraddr = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *req = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", youraddr];
NSString *result = [NSString stringWithContentsOfURL:[NSURL URLWithString:req] encoding:NSUTF8StringEncoding error:NULL];
if (result) {
NSScanner *scanneCoordinate = [NSScanner scannerWithString:result];
if ([scanneCoordinate scanUpToString:@"\"lat\" :" intoString:nil] && [scanneCoordinate scanString:@"\"lat\" :" intoString:nil]) {
[scanneCoordinate scanDouble:&latitude];
if ([scanneCoordinate scanUpToString:@"\"lng\" :" intoString:nil] && [scanneCoordinate scanString:@"\"lng\" :" intoString:nil]) {
[scanneCoordinate scanDouble:&longitude];
}
}
}
CLLocationCoordinate2D latitudelongitudeCoordinate;
NSLog(" longitude==%ul", center. latitude);
NSLog(" longitude==%ul", center.longitude);
return latitudelongitudeCoordinate;
}
【讨论】:
您使用的是 GoogleMaps,所以我建议您使用 googleAPI 进行地理编码。
例子
https://maps.googleapis.com/maps/api/geocode/json?address=London&key=API_KEY
文档:
https://developers.google.com/maps/documentation/geocoding/#GeocodingRequests
希望对你有帮助......
【讨论】:
将位置转换为纬度/经度坐标的过程称为地理编码。实际上有数十个提供此信息的提供者,一些免费的其他付费的。只需搜索“地理编码 API”即可。
我最喜欢的一个是ArcGIS。只要您不将结果存储在数据库中,它就提供免费的地理编码服务。
【讨论】:
如果您不习惯使用 Google,您可以直接从 MapKit 使用 CLGeocoder。
它的方法geocodeAddressString:completionHandler: 完全符合您的要求。
【讨论】:
CLGeocoder 使用 Apple 的地图服务来确定位置,它们可能与 Google 找到的位置不同。