起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2154|回复: 0

[分享] IOS定位GPS坐标转换bd09ll并解析出地址

[复制链接]

89

主题

627

帖子

4216

积分

论坛元老

Rank: 8Rank: 8

积分
4216
QQ
发表于 2017-2-17 16:47:42 | 显示全部楼层 |阅读模式
ios中获得的坐标系为gps(wgs84),直接用它获得的坐标点去百度地图API转换为地址偏差是相当大的,所以要先将其转换为百度坐标系bd09ll,再解析为详细地址信息百度地图API申请地址
http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5file:///C:/Users/ShaoYi/Documents/My%20Knowledge/temp/6908e5cd-196c-47b8-b1a5-cd8203b796ee/128/index_files/abab510c649b502e523240a6a607917b.jpg得到AK
1.坐标转换代码
  1. /**
  2.      * 百度地图API:其他坐标系转换为百度坐标系
  3.      *
  4.      * @param type(转换类型)
  5.      * @param point(带转换坐标,point={"longitude":经度,"latitude":纬度})
  6.      * @param successCallback(成功回调函数)
  7.      * @param errorCallback(失败回调函数)
  8.      */
  9.     Model.prototype.bMapTransform = function(type, point, successCallback, errorCallback) {
  10.         require([ "http://api.map.baidu.com/api?v=2.0&ak=你自己的AK&callback=_baiduInit" ], function(e) {
  11.             if (window.BMap) {
  12.                 var count = 0;// 计时数
  13.                 // 计时器
  14.                 var load_setInterval = setInterval(function() {
  15.                     count++;
  16.                     if (window.BMap.version) {
  17.                         // 转换类型
  18.                         if (type == "wgs84-bd09ll") {
  19.                             // wgs84(gps坐标系)转bd09ll(百度坐标系)
  20.                             // GPS坐标
  21.                             var ggPoint = new BMap.Point(point.longitude, point.latitude);
  22.                             // 坐标转换完之后的回调函数
  23.                             var translateCallback = function(result) {
  24.                                 if (result.status === 0) {
  25.                                     // 示例返回参数
  26.                                     var sample_result = {
  27.                                         "status" : 0,
  28.                                         "points" : [ {
  29.                                             "lng" : 113.3,
  30.                                             "lat" : 23.1
  31.                                         } ]
  32.                                     };
  33.                                     successCallback(result);
  34.                                 } else {
  35.                                     errorCallback("坐标系转换失败。");
  36.                                 }
  37.                             };
  38.                             setTimeout(function() {
  39.                                 var convertor = new BMap.Convertor();
  40.                                 var pointArr = [];
  41.                                 pointArr.push(ggPoint);
  42.                                 convertor.translate(pointArr, 1, 5, translateCallback);
  43.                             }, 1000);
  44.                         } else {
  45.                             // 其他类型,待开拓
  46.                         }
  47.                         // Test
  48.                         console.log(count * 10);
  49.                         // 清除计时器
  50.                         clearInterval(load_setInterval);
  51.                     } else if (count > 3000) {
  52.                         // 超时主动关闭,默认3秒初始化时间
  53.                         errorCallback("百度地图实例未能正确初始化。");
  54.                         // 清除计时器
  55.                         clearInterval(load_setInterval);
  56.                     }
  57.                 }, 10);
  58.             } else {
  59.                 errorCallback("百度地图实例未能正确初始化。");
  60.             }
  61.         });
  62.     };
复制代码
2.解析坐标为详细地址代码

  1. /**
  2.      * 百度地图API:通过坐标解析得到地址信息
  3.      *
  4.      * @param point(带转换坐标,point={"longitude":经度,"latitude":纬度})
  5.      * @param successCallback(成功回调函数)
  6.      * @param errorCallback(失败回调函数)
  7.      */
  8.     Model.prototype.bMapGetAddress = function(point, successCallback, errorCallback) {
  9.         require([ "http://api.map.baidu.com/api?v=2.0&ak=你自己的AK&callback=_baiduInit" ], function(e) {
  10.             if (window.BMap) {
  11.                 // 计时数
  12.                 var count = 0;
  13.                 // 计时器
  14.                 var load_setInterval = setInterval(function() {
  15.                     count++;
  16.                     if (window.BMap.version) {
  17.                         var _point = new BMap.Point(point.longitude, point.latitude);
  18.                         var geoc = new BMap.Geocoder();
  19.                         geoc.getLocation(_point, function(result) {
  20.                             if (result) {
  21.                                 // 示例返回参数
  22.                                 var sample_result = {
  23.                                     "point" : {
  24.                                         "lng" : 113.11,
  25.                                         "lat" : 23.1
  26.                                     },
  27.                                     "address" : "广东省广州市海珠区新港中路999号",
  28.                                     "addressComponents" : {
  29.                                         "streetNumber" : "999号",
  30.                                         "street" : "新港中路",
  31.                                         "district" : "海珠区",
  32.                                         "city" : "广州市",
  33.                                         "province" : "广东省",
  34.                                         "surroundingPois" : [ {} ]
  35.                                     }
  36.                                 };
  37.                                 successCallback(result);
  38.                             } else {
  39.                                 errorCallback("地址解析失败。");
  40.                             }
  41.                         });
  42.                         // Test
  43.                         console.log(count * 10);
  44.                         // 清除计时器
  45.                         clearInterval(load_setInterval);
  46.                     } else if (count > 3000) {
  47.                         // 超时主动关闭,默认3秒初始化时间
  48.                         errorCallback("百度地图实例未能正确初始化。");
  49.                         // 清除计时器
  50.                         clearInterval(load_setInterval);
  51.                     }
  52.                 }, 10);
  53.             }
  54.         });
  55.     };
复制代码







QQ截图20170217164034.jpg
申请.jpg

评分

参与人数 1威望 +50 收起 理由
半导体 + 50 依旧棒棒哒

查看全部评分

时也运也命也,非吾之所能也。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-26 23:35 , Processed in 0.059759 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表