这是我在开发中遇到的问题,如果大家有什么更好的方法或者建议都可以留言给我,不说了直接粘代码吧

///地图需要v4.5.0及以上版本才必须要打开此选项(v4.5.0以下版本,需要手动配置info.plist)[AMapServices sharedServices].enableHTTPS = YES;///初始化地图_mapView = [[MAMapView alloc] initWithFrame:self.locationView.bounds];_mapView.delegate = self;//给_mapView添加长按手势UILongPressGestureRecognizer *lpress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];lpress.delegate = self;[_mapView addGestureRecognizer:lpress];///把地图添加至view[self.locationView addSubview:_mapView];
///进入地图就显示定位小蓝点// 开启定位_mapView.showsUserLocation = YES;// 追踪用户位置_mapView.userTrackingMode = MAUserTrackingModeFollow;// 设置成NO表示关闭指南针;YES表示显示指南针_mapView.showsCompass= NO;//全局的大头针_pointAnnotation = [[MAPointAnnotation alloc] init];
#pragma mark - 允许多手势响应
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {return YES;
}
//自定义大头针我这里只是把大头针变成一张自定义的图片
- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation
{if ([annotation isKindOfClass:[MAPointAnnotation class]]){static NSString *reuseIndetifier = @"annotationReuseIndetifier";MAAnnotationView *annotationView = (MAAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseIndetifier];if (annotationView == nil){annotationView = [[MAAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseIndetifier];}annotationView.image = [UIImage imageNamed:@"list_map_ico_location"];//设置中心点偏移,使得标注底部中间点成为经纬度对应点annotationView.centerOffset = CGPointMake(0, -18);return annotationView;}return nil;
}- (void)longPress:(UIGestureRecognizer*)gestureRecognizer{if (gestureRecognizer.state == UIGestureRecognizerStateEnded){return;}[_mapView removeAnnotation:_pointAnnotation];//坐标转换CGPoint touchPoint = [gestureRecognizer locationInView:_mapView];CLLocationCoordinate2D touchMapCoordinate =[_mapView convertPoint:touchPoint toCoordinateFromView:_mapView];_pointAnnotation.coordinate = touchMapCoordinate;//_pointAnnotation.title = @"设置名字";[_mapView addAnnotation:_pointAnnotation];[self setLocationWithLatitude:touchMapCoordinate.latitude AndLongitude:touchMapCoordinate.longitude];
}- (void)setLocationWithLatitude:(CLLocationDegrees)latitude AndLongitude:(CLLocationDegrees)longitude{NSString *latitudeStr = [NSString stringWithFormat:@"%f",latitude];NSString *longitudeStr = [NSString stringWithFormat:@"%f",longitude];_mapCoordinate = [NSString stringWithFormat:@"%@,%@",latitudeStr,longitudeStr];//NSLog(@"%@",_mapCoordinate);//反编码 经纬度---->位置信息CLLocation *location=[[CLLocation alloc]initWithLatitude:latitude longitude:longitude];CLGeocoder *geocoder=[[CLGeocoder alloc]init];[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {if (error) {NSLog(@"反编码失败:%@",error);[self.view makeToast:@"该网点经纬度信息有误,请重新标注!"];}else{//NSLog(@"反编码成功:%@",placemarks);CLPlacemark *placemark=[placemarks lastObject];//NSLog(@"%@",placemark.addressDictionary[@"FormattedAddressLines"]);NSDictionary *addressDic=placemark.addressDictionary;NSString *state=[addressDic objectForKey:@"State"];NSString *city=[addressDic objectForKey:@"City"];NSString *subLocality=[addressDic objectForKey:@"SubLocality"];NSString *street=[addressDic objectForKey:@"Street"];//NSLog(@"%@,%@,%@,%@",state,city,subLocality,street);NSString *strLocation;if (street.length == 0 || street == NULL || [street isEqualToString:@"(null)"]) {strLocation= [NSString stringWithFormat:@"%@%@%@",state,city,subLocality];}else{strLocation= [NSString stringWithFormat:@"%@%@%@%@",state,city,subLocality,street];}self.addressTextView.text = strLocation;}}];
}
/** 手机定位你当前的位置,并获得你位置的信息*/
- (void)mobilePhonePositioning{_locationManager = [[AMapLocationManager alloc] init];_locationManager.delegate = self;[AMapServices sharedServices].apiKey =@"你的key值";// 带逆地理信息的一次定位(返回坐标和地址信息)[_locationManager setDesiredAccuracy:kCLLocationAccuracyBest];//   定位超时时间,最低2s,此处设置为10s_locationManager.locationTimeout =10;//   逆地理请求超时时间,最低2s,此处设置为10s_locationManager.reGeocodeTimeout = 10;// 显示进度圈[self showHUDWithStatus:@"正在定位您的位置..."];// 带逆地理(返回坐标和地址信息)。将下面代码中的 YES 改成 NO ,则不会返回地址信息。[_locationManager requestLocationWithReGeocode:YES completionBlock:^(CLLocation *location, AMapLocationReGeocode *regeocode, NSError *error) {// 隐藏进度圈[self dismissHUDIgnoreShowCount];if (error){//NSLog(@"locError:{%ld - %@};", (long)error.code, error.localizedDescription);[self.view makeToast:@"抱歉,未能定位到你的位置!"];if (error.code == AMapLocationErrorLocateFailed){return;}}//NSLog(@"location:%@", location);NSString *latitude = [NSString stringWithFormat:@"%f",location.coordinate.latitude];NSString *longitude = [NSString stringWithFormat:@"%f",location.coordinate.longitude];_mapCoordinate = [NSString stringWithFormat:@"%@,%@",latitude,longitude];if (regeocode){//NSLog(@"reGeocode:%@", regeocode);self.addressTextView.text = regeocode.formattedAddress;}}];
}

具体的效果图如下:

iOS-高德地图点击地图获取点击点对应的地理位置,并添加自定义的大头针相关推荐

  1. 高德地图 API,点击地图标记获取自定义标记 (Marker) 中的信息

    高德地图 API,点击地图标记获取自定义标记 (Marker) 中的信息 通过 高德地图 JS Web 添加自定义图标,自定义窗口标记 已经能在地图中正常添加自定义标记了 这篇文章讲讲点击标记时,如何 ...

  2. 用高德地图实现点击地图添加标记点,获取该点的经纬度,详细地址,通过输入框进行地址搜索自动定位到输入框地址

    用高德地图实现点击地图添加标记点,获取该点的经纬度,详细地址,通过输入框进行地址搜索自动定位到输入框地址 <template><div class="wrap"& ...

  3. vue对高德地图的简单使用:点击标记并获取经纬度和详细地址

    目录 第一步:先按部就班,进入高德开放平台,跟着步骤注册账号,创建应用 第二步:用npm下载包,初始化地图 第三步:实现点击地图添加标记 第四步:点击获取详细地址 第五步:搜索获取相关地区提示 第六步 ...

  4. 高德地图搜索,点击地图获取经纬度

    1.H5页面 一个搜索框.一个经纬度接收框 <input class="layui-input" placeholder="地名" name=" ...

  5. vue 高德地图 定位插件 地图实例插件 获取点击的地方的经纬度和具体地址

    npm 安装 推荐 npm 安装. npm install vue-amap --saveimport VueAMap from 'vue-amap';Vue.use(VueAMap); VueAMa ...

  6. 高德地图的简单使用:点击标记获取经纬度和详细地址

    准备工作 1. 先进入高德开发平台注册登录 2.进入地图 js Api 按照步骤申请key 3 使用npm安装依赖包 npm i @amap/amap-jsapi-loader --save 4. 高 ...

  7. ios 高德挪动地图获取经纬度_IOS 地图移动中心点获取

    MKMap显示地图后,如果用户移动了地图,自己定义的数据就需要刷新了,所以这个时候,中心点的经纬度就比较重要了. 本文演示如何获取经纬度 在MKMapViewDelegate里有个方法 - (void ...

  8. IOS高德地图点击锚点使锚点位于屏幕中间

    self.mapView.centerCoordinate =CLLocationCoordinate2DMake(model.PA_AXIS_Y,model.PA_AXIS_X); mapView ...

  9. flutter引入高德地图_Flutter笔记-调用原生IOS高德地图sdk

    一.前言 2017年底因公司业务组合部门调整,新的团队部分维护的项目用React Native技术混合开发.为适应环境变化,开启疯狂RN学习之旅,晚上回来啃资料看视频.可能由于本身对RN技术体验不感冒 ...

  10. iOS 应用内跳转到百度地图、苹果地图、谷歌地图、高德地图等

    最近在做导航,所以把自己找到的资料总结一下! 无论是百度地图.高德地图.谷歌地图还是腾讯地图它们都有自己的SDK,我们只需要在自己的工程中导入SDK并查看相应的官方文档,基本上就可以实现导航.但是这样 ...

最新文章

  1. 大赛归来的你们,仍是那个少年--少了游移、多了自信,少了软弱、多了坚强...
  2. GeoServer怎样修改线性地图的颜色样式
  3. SpringBoot中使用thymeleaf的switch来实现if-else if -else的效果
  4. QT的QWinTaskbarButton类的使用
  5. mysql 查询近几天的数据
  6. 【终极办法!】idea没有import project解决办法
  7. beego使用php,介绍beego、nginx性能测试实例
  8. WordPress可视化拖拽自助建站主题The7 V10.0.0
  9. C语言课后习题(42)
  10. oracle监听管理工具,oracle监听器管理
  11. 关于html5音频如何应用及解决方法?
  12. SAP License:SAP中的成本核算模型(调侃版)
  13. vs2012 怎样解决 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包的问题
  14. 全球Top10最佳移动统计分析sdk
  15. 批量增加字段值 mysql_按照一定规则批量修改表中新增字段的值
  16. rocketmq底层通信模块解析
  17. 基本排序算法(冒泡,选择(希尔),插入,快速,归并,堆,二分查找)
  18. 武汉大学计算机学院冯晶,武汉大学国际软件学院导师简介-冯晶
  19. office word 文件未找到:MathPage.WLL
  20. 自助装机配置专家点评2

热门文章

  1. 智比奈特万兆光口网卡 ZB-10G-1F 驱动安装和带宽测试
  2. 深度学习:图像去雨网络实现Pytorch (二)一个简单实用的基准模型(PreNet)实现
  3. ATA工厂测试AT_MODE下震动不振问题分析
  4. 祝愿天下所有运维的服务器永不宕机!
  5. 菜鸟应用-手机应用在线制作平台,手机应用,APP开发,手机软件开发
  6. 看日漫学日语:日漫里常看到的日语100句(建议收藏)
  7. 插画构图如何学习,小白必看
  8. 盘古石考核取证复现检材1(??)
  9. iOS操作系统的层次架构和相关服务
  10. 多变量微积分笔记(1)——向量和矩阵