zoukankan      html  css  js  c++  java
  • iOS根据经纬度获得地理名称

    1、首先加入工程的静态库

      Build Phases -> Link Binary With Libraries -> +

      

    2、在需要的VC中头文件、添加代理

      

    3、在.m中声明属性

      

    4、初始化CLLocationManager

      

    5、CLLocationManagerDelegate - 方法

      - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

      {

        //将经度显示到label

        self.longitude.text = [NSString stringWithFormat:@"%lf", newLocation.coordinate.longitude];

          //将纬度现实到label

        self.latitude.text = [NSString stringWithFormat:@"%lf", newLocation.coordinate.latitude];

          // 获取当前所在的城市名

          CLGeocoder *geocoder = [[CLGeocoder alloc] init];

          //根据经纬度反向地理编译出地址信息

          [geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *array, NSError *error){

                if (array.count > 0){

                    CLPlacemark *placemark = [array objectAtIndex:0];

                    //将获得的所有信息显示到label

        //            self.location.text = placemark.name;

        //            self.location.text = placemark.country;//中国

        //            self.location.text = placemark.administrativeArea;//山西省

        //            self.location.text = placemark.locality;//太原市

        //            self.location.text = placemark.subLocality;//万柏林区

        //            self.location.text = [NSString stringWithFormat:@"%@%@%@",placemark.administrativeArea,placemark.location,placemark.subLocality];

                    NSString *administrativeAreaStr = placemark.administrativeArea;

                    NSString *localityStr = placemark.locality;

                    NSString *subLocalityStr = placemark.subLocality;

                    self.location.text = [NSString stringWithFormat:@"%@ %@ %@",administrativeAreaStr,localityStr,subLocalityStr];

                    NSLog(@"信息1:%@",placemark.name);

                    //获取城市

                    NSString *city = placemark.locality;

                      if (!city) {

                            //四大直辖市的城市信息无法通过locality获得,只能通过获取省份的方法来获得(如果city为空,则可知为直辖市)

                            city = placemark.administrativeArea;

                      }

                    NSLog(@"city = %@", city);

                    _cityLable.text = city;  

      //            [_cityButton setTitle:city forState:UIControlStateNormal];

              }

              else if (error == nil && [array count] == 0)

              {

                  NSLog(@"No results were returned.");

              }

              else if (error != nil)

              {

                  NSLog(@"An error occurred = %@", error);

              }

          }];

          //系统会一直更新数据,直到选择停止更新,因为我们只需要获得一次经纬度即可,所以获取之后就停止更新

          [manager stopUpdatingLocation];

      }

    6、在Info.plist文件中加入

        NSLocationAlwaysUsageDescription 和 NSLocationWhenInUseUsageDescription 设置为String Valu是提示信息可以为空。

    7、运行结果

                    

    附加:一个可以不用于真机调试而测试定位信息

      

  • 相关阅读:
    SilkTest Q&A 5
    SilkTest Q&A 6
    产生n不同随机数的算法
    根据日期计算星期小算法
    Linux $( )与${ }的区别
    UVA 10313(完全背包变形)
    HDU 4277 USACO ORZ
    Android Studio上手,基于VideoView的本地文件及流媒体播放器
    Mina框架项目运用
    【iOS】怎样推断文本文件的字符编码格式
  • 原文地址:https://www.cnblogs.com/ChouDanDan/p/5230079.html
Copyright © 2011-2022 走看看