iOS 原生地图地理编码与反地理编码(详解)
程序员文章站
2023-12-19 23:58:40
当我们要在app实现功能:输入地名,编码为经纬度,实现导航功能。
那么,我需要用到原生地图中的地理编码功能,而在core location中主要包含了定位、地理编码(包括...
当我们要在app实现功能:输入地名,编码为经纬度,实现导航功能。
那么,我需要用到原生地图中的地理编码功能,而在core location中主要包含了定位、地理编码(包括反编码)功能。
在文件中导入
#import <corelocation/corelocation.h>
地理编码:
/** 地理编码 */ - (void)geocoder { clgeocoder *geocoder=[[clgeocoder alloc]init]; nsstring *addressstr = @"广东省深圳市宝安区";//位置信息 [geocoder geocodeaddressstring:addressstr completionhandler:^(nsarray<clplacemark *> * _nullable placemarks, nserror * _nullable error) { if (error!=nil || placemarks.count==0) { return ; } //创建placemark对象 clplacemark *placemark=[placemarks firstobject]; //经度 nsstring *longitude =[nsstring stringwithformat:@"%f",placemark.location.coordinate.longitude]; //纬度 nsstring *latitude =[nsstring stringwithformat:@"%f",placemark.location.coordinate.latitude]; nslog(@"经度:%@,纬度:%@",longitude,latitude); }]; }
地理反编码:
/** 地理反编码 */ - (void)reversegeocoder{ //创建地理编码对象 clgeocoder *geocoder=[[clgeocoder alloc]init]; //经度 nsstring *longitude = @"113.23"; //纬度 nsstring *latitude = @"23.16"; //创建位置 cllocation *location=[[cllocation alloc]initwithlatitude:[latitude floatvalue] longitude:[longitude floatvalue]]; //反地理编码 [geocoder reversegeocodelocation:location completionhandler:^(nsarray<clplacemark *> * _nullable placemarks, nserror * _nullable error) { //判断是否有错误或者placemarks是否为空 if (error !=nil || placemarks.count==0) { nslog(@"%@",error); return ; } for (clplacemark *placemark in placemarks) { //详细地址 nsstring *addressstr = placemark.name; nslog(@"详细地址1:%@",addressstr); nslog(@"详细地址2:%@",placemark.addressdictionary); nslog(@"详细地址3:%@",placemark.locality); } }]; }
以上这篇ios 原生地图地理编码与反地理编码(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。