【问题标题】:How to get Latitude and longitude from typed address by a user in Ios 6 [closed]如何从 Ios 6 中的用户输入的地址中获取纬度和经度 [关闭]
【发布时间】:2013-08-08 14:49:33
【问题描述】:

我是 iOS 的新手。我正在学习 MapKit 和 CoreLocation。我的程序中有两个视图控制器,在第一个视图控制器中有一个文本字段,用户可以输入地址。和一个按钮。填写地址后,如果用户点击按钮,它将重定向到第二个视图控制器,即地图视图控制器。会有两个注解。一个用于用户当前位置,另一个用于用户键入的地址。 所以你能告诉我如何获取用户输入的地址的纬度,长度,并在地图视图上显示该纬度的注释。

提前致谢。

【问题讨论】:

  • 嘿 @user1960149 检查我的答案。,,,, 并接受它
  • #import #import

标签: ios map core-location


【解决方案1】:

您可以对this 使用 Google 地理编码。就像通过 HTTP 获取数据并解析一样简单(可以返回 JSON KML、XML、CSV)。

- (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address
{
    double latitude = 0, longitude = 0;
    NSString *esc_addr =  [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString *req = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr];
    NSString *result = [NSString stringWithContentsOfURL:[NSURL URLWithString:req] encoding:NSUTF8StringEncoding error:NULL];
    if (result) {
        NSScanner *scanner = [NSScanner scannerWithString:result];
        if ([scanner scanUpToString:@"\"lat\" :" intoString:nil] && [scanner scanString:@"\"lat\" :" intoString:nil]) {
            [scanner scanDouble:&latitude];
            if ([scanner scanUpToString:@"\"lng\" :" intoString:nil] && [scanner scanString:@"\"lng\" :" intoString:nil]) {
                [scanner scanDouble:&longitude];
            }
        }
    }
    CLLocationCoordinate2D center;
    center.latitude = latitude;
    center.longitude = longitude;
    return center;
}

【讨论】:

  • hi 在哪里调用这个函数以及如何调用这个函数请重播!!!
【解决方案2】:

这里是代码

#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>

+(CLLocationCoordinate2D) getLocationFromAddressString:(NSString*) addressStr {

    double latitude = 0, longitude = 0;
    NSString *esc_addr =  [addressStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString *req = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr];
    NSString *result = [NSString stringWithContentsOfURL:[NSURL URLWithString:req] encoding:NSUTF8StringEncoding error:NULL];
    if (result) {
        NSScanner *scanner = [NSScanner scannerWithString:result];
        if ([scanner scanUpToString:@"\"lat\" :" intoString:nil] && [scanner scanString:@"\"lat\" :" intoString:nil]) {
            [scanner scanDouble:&latitude];
            if ([scanner scanUpToString:@"\"lng\" :" intoString:nil] && [scanner scanString:@"\"lng\" :" intoString:nil]) {
                [scanner scanDouble:&longitude];
            }
        }
    }
    CLLocationCoordinate2D center;
    center.latitude = latitude;
    center.longitude = longitude;
    return center;

}

然后调用这个方法

coordinates = [self getLocationFromAddressString:@"address"];

【讨论】:

  • 1.需要添加安全url https 2.将api密钥放在地址后面
【解决方案3】:
    #import core location Framework

#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>

    //Current Location

    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        locationManager.distanceFilter = kCLLocationAccuracyKilometer;
        [locationManager startUpdatingLocation];

        CLLocation *location = [locationManager location];
        coordinate = [location coordinate];
        float latitude = coordinate.latitude;
        float longitude = coordinate.longitude;
        NSLog(@"%f",latitude);
        NSLog(@"%f",longitude);


    and type location you call google webservice and pass type address and
    google api return corrdinate for type address

    http://maps.google.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false

【讨论】:

  • 从当前位置获取,而不是从用户输入的自定义地址获取
猜你喜欢
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多