Google Maps SDK iOS 从用户输入获取坐标
Google Maps SDK iOS Getting co-ordinates from a user input
我希望在我的应用程序中添加功能,用户可以在其中输入位置名称,例如 'London' 或 'New York',我希望它能在 google 地图上搜索 co-纵坐标。类似于 google 地图应用程序中使用的方法。
获得坐标后,我可以添加标记我只是不确定如何搜索用户输入以找到地点的经纬度。
任何帮助,
谢谢
将位置转换为 latitude/longitude 坐标的过程称为地理编码。这些信息实际上有几十个提供者,有些是免费的,有些是付费的。只需搜索 "geocoding API".
我的最爱之一是 ArcGIS。只要您不将结果存储在数据库中,它就提供免费的地理编码服务。
如果您不依赖于使用 Google,您可以直接从 MapKit 使用 CLGeocoder
。
它的方法 geocodeAddressString:completionHandler:
完全符合您的要求。
为此,您需要使用 Google 地理编码。很简单,通过HTTP获取数据,解析即可(可以 return JSON )
检查这个 api https://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
希望对您有所帮助......
我希望在我的应用程序中添加功能,用户可以在其中输入位置名称,例如 'London' 或 'New York',我希望它能在 google 地图上搜索 co-纵坐标。类似于 google 地图应用程序中使用的方法。
获得坐标后,我可以添加标记我只是不确定如何搜索用户输入以找到地点的经纬度。
任何帮助,
谢谢
将位置转换为 latitude/longitude 坐标的过程称为地理编码。这些信息实际上有几十个提供者,有些是免费的,有些是付费的。只需搜索 "geocoding API".
我的最爱之一是 ArcGIS。只要您不将结果存储在数据库中,它就提供免费的地理编码服务。
如果您不依赖于使用 Google,您可以直接从 MapKit 使用 CLGeocoder
。
它的方法 geocodeAddressString:completionHandler:
完全符合您的要求。
为此,您需要使用 Google 地理编码。很简单,通过HTTP获取数据,解析即可(可以 return JSON ) 检查这个 api https://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
希望对您有所帮助......