百度地图反地理

1、地理编码指的是将地址位置(中文地址)转换成经纬度,反地址编码指的是将经纬度转换成地址位置;

2、在百度地图中需要用到三个关键性的类:BMKGeoCodeSearch、BMKGeoCodeSearchOption、BMKReverseGeoCodeOption;

3、BMKGeoCodeSearch:地理编码主类,用来查询、返回结果信息(地址位置或经纬度);

4、BMKGeoCodeSearchOption:地理编码选项,即地理编码的数据模型,地址是通过该类传递进去的;

5、BMKReverseGeoCodeOption:反地理编码选项,即反地理编码的数据模型,经纬度就是通过该类传递进去的;

6、有了以上基本信息,开始做一个简单的示例:从手机页面上输入经纬度通过按钮事件将对应的地理位置输出到手机屏幕,反之亦然;

7、基本UI视图如下所示:

8、关键代码:

    1. //
    2. //  SAViewController.m
    3. //  MapDemo
    4. //
    5. //  Created by Sian on 14/11/13.
    6. //  Copyright (c) 2014年 Sian. All rights reserved.
    7. //
    8. #import "SAViewController.h"
    9. #import "BMapKit.h"
    10. @interface SAViewController () <BMKGeoCodeSearchDelegate>
    11. @property (nonatomic, strong) BMKGeoCodeSearch *geoCode;        // 地理编码
    12. @property (weak, nonatomic) IBOutlet UITextField *longitude;    // 经度输入
    13. @property (weak, nonatomic) IBOutlet UITextField *latitude;     // 纬度输入
    14. @property (weak, nonatomic) IBOutlet UILabel *address;          // 位置输出
    15. @property (weak, nonatomic) IBOutlet UITextField *inputAddress; // 地址输入
    16. @property (weak, nonatomic) IBOutlet UILabel *location;         // 经纬输出
    17. // 地址输出事件
    18. - (IBAction)outputAdd;
    19. // 经纬度输出事件
    20. - (IBAction)outputLocation;
    21. @end
    22. @implementation SAViewController
    23. - (void)viewDidLoad
    24. {
    25. [super viewDidLoad];
    26. }
    27. #pragma mark geoCode的Get方法,实现延时加载
    28. - (BMKGeoCodeSearch *)geoCode
    29. {
    30. if (!_geoCode) {
    31. _geoCode = [[BMKGeoCodeSearch alloc] init];
    32. _geoCode.delegate = self;
    33. }
    34. return _geoCode;
    35. }
    36. #pragma mark 点击空白处隐藏键盘
    37. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    38. {
    39. [self.view endEditing:YES];
    40. }
    41. #pragma mark 获取地理位置按钮事件
    42. - (IBAction)outputAdd
    43. {
    44. // 初始化反地址编码选项(数据模型)
    45. BMKReverseGeoCodeOption *option = [[BMKReverseGeoCodeOption alloc] init];
    46. // 将TextField中的数据传到反地址编码模型
    47. option.reverseGeoPoint = CLLocationCoordinate2DMake([self.latitude.text floatValue], [self.longitude.text floatValue]);
    48. NSLog(@"%f - %f", option.reverseGeoPoint.latitude, option.reverseGeoPoint.longitude);
    49. // 调用反地址编码方法,让其在代理方法中输出
    50. [self.geoCode reverseGeoCode:option];
    51. }
    52. #pragma mark 获取经纬度按钮事件
    53. - (IBAction)outputLocation
    54. {
    55. // 初始化地址编码选项(数据模型)
    56. BMKGeoCodeSearchOption *option = [[BMKGeoCodeSearchOption alloc] init];
    57. // 将TextField中的数据传到地址编码模型
    58. option.address = self.inputAddress.text;
    59. NSLog(@"%@", option.address);
    60. // 调用地址编码方法,让其在代理方法中输出
    61. [self.geoCode geoCode:option];
    62. }
    63. #pragma mark 代理方法返回反地理编码结果
    64. - (void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher
      result:(BMKReverseGeoCodeResult *)result
      errorCode:(BMKSearchErrorCode)error
    65. {
    66. if (result) {
    67. self.address.text = [NSString stringWithFormat:@"%@", result.address];
    68. NSLog(@"%@ - %@", result.address, result.addressDetail.streetNumber);
    69. }else{
    70. self.address.text = @"找不到相对应的位置信息";
    71. }
    72. }
    73. #pragma mark 代理方法返回地理编码结果
    74. - (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error
    75. {
    76. if (result) {
    77. self.location.text = [NSString
      stringWithFormat:@"经度为:%.2f   纬度为:%.2f", result.location.longitude,
      result.location.latitude];
    78. NSLog(@"%@", result.address);
    79. }else{
    80. self.location.text = @"找不到相对应的位置";
    81. }
    82. }
    83. @end
时间: 2024-08-25 19:49:51

百度地图反地理的相关文章

HTML5 调用百度地图API地理定位

<!DOCTYPE html> <html> <title>HTML5 HTML5 调用百度地图API地理定位实例</title> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="ht

ios百度地图逆地理编码(基于2.3.0--2.4.0SDK开发)

不得不说,现在的百度LBS部门是不是没人了啊,时不时的搞出来一些不好用得东西 要做百度的逆地理编码功能,肯定是要先启动百度服务了,这些就不再扯了.  BMKGeoCodeSearch *_geoCodeSearch = [[BMKGeoCodeSearch alloc]init];  _geoCodeSearch.delegate = self; BMKReverseGeoCodeOption *reverseGeoCodeOption= [[BMKReverseGeoCodeOption al

使用百度地图做地理追踪

js部分 //百度地图 bMapFun : function () { var map = new BMap.Map("map"); var point = new BMap.Point(116.319764, 40.070091), reportP = new BMap.Point(116.311481, 40.072409), n = 1, polyline, recentP = false, dataPoints = [ reportP,//坐标1 new BMap.Point(

百度地图-反编码心得

类似于微信中的发送位置,拖拽重新定位,以及反编码,列表附近的位置. 思路就是将一个UIImageView固定在地图中间,每次更新位置,给UIImageView添加动画即可. 代码如下: #import "FTBasicController.h" typedef void (^SelectBlock) (NSString *address,CLLocationCoordinate2D select); @interface FTUploadAddressController : FTBa

iOS 百度地图反检索地址的问题

今天碰到了这样一个问题,我从服务器端获取了当前用户的轨迹数据列表,想通过反向检索获取用户的轨迹地址,逻辑代码基本上是这样 BMKGeoSearch *signleSearch; for(location in locationArray) { CLLocationCoordinate2d pt = xxxxx; BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];

百度地图开发(二)之添加覆盖物 + 地理编码和反地理编码

之前写过一篇关于百度地图开发的blog,主要介绍了百度地图的基本地图的显示. 详见:Android百度地图开发(一)之初体验 下面来看一下地图上覆盖物的添加,以及地理编码和反地理编码. 添加覆盖物 在地图上添加覆盖物,一般需要以下几个步骤: 1. 定义坐标点,有可能是一个,有可能是多个(比如:多边形覆盖物). 2. 构造OverlayOptions(地图覆盖物选型基类). 3. 在地图上添加覆盖物. 4. 添加相应的监听事件. 在API中可以看到,BaiDuMap类中有一个方法: 这个方法就是用

Node.js调用百度地图Web服务API的Geocoding接口进行点位反地理信息编码

(从我的新浪博客上搬来的,做了一些修改.) 最近迷上了node.js以及JavaScript.现在接到一个活,要解析一个出租车点位数据的地理信息.于是就想到使用Node.js调用百度地图API进行解析. 使用的库主要就是有fs.request. // 请求包 var fs = require('fs');var request = require('request'); // 设置百度API的参数var baiduApiKey = "cQV9U4QhamoOjg6rjdOTAQSiUMxxxxx

iOS第三方地图-百度地图常用功能使用(POI搜索,地理正反编码,定位,添加标注)

百度地图官网: http://developer.baidu.com/map/index.php?title=iossdk 百度地图集成 1.引入相关包 注:不需要使用地图功能的可以不用boundle包,模拟器使用的framework和真机不一样具体看官网 2.info.plist中 3.在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC. 4.将一个文件设置为.mm 百度地图使用 1.AppDelegate中注册 _mapManager

HTML5地理定位,百度地图API,知识点熟悉

判断浏览器的兼容问题: IE9+支持地理定位,FF Chrome新版支持地理定位  if (navigator.geolocation) { alert('支持地理定位'); } else { alert('不支持地理定位'); } 获取自己位置经纬度 <script> var x=document.getElementById("wrap"); function getLocation () { if (navigator.geolocation) { navigator