百度地图 坐标偏移、覆盖物偏移解决方案
来源:互联网 发布:标准偏差计算软件 编辑:程序博客网 时间:2024/06/02 01:11
百度地图定位不准确,这个问题困扰我一整天,想来度娘是强大的,各种查询总于找到解决方案,其实就是将经纬度转换为百度地图识别的经纬度,是不是很扯。
网址
http://developer.baidu.com/map/jsdemo/demo/convertor.js 这是单个坐标转换接口
http://developer.baidu.com/map/jsdemo/demo/changeMore.js 这是批量转换接口
1,单个转换函数:
//2011-7-25 (function(){ //闭包 function load_script(xyUrl, callback){ var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = xyUrl; //借鉴了jQuery的script跨域方法 script.onload = script.onreadystatechange = function(){ if((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")){ callback && callback(); // Handle memory leak in IE script.onload = script.onreadystatechange = null; if ( head && script.parentNode ) { head.removeChild( script ); } } }; // Use insertBefore instead of appendChild to circumvent an IE6 bug. head.insertBefore( script, head.firstChild ); } function translate(point,type,callback){ var callbackName = 'cbk_' + Math.round(Math.random() * 10000); //随机函数名 var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from="+ type + "&to=4&x=" + point.lng + "&y=" + point.lat + "&callback=BMap.Convertor." + callbackName; //动态创建script标签 load_script(xyUrl); BMap.Convertor[callbackName] = function(xyResult){ delete BMap.Convertor[callbackName]; //调用完需要删除改函数 var point = new BMap.Point(xyResult.x, xyResult.y); callback && callback(point); } } window.BMap = window.BMap || {}; BMap.Convertor = {}; BMap.Convertor.translate = translate; })();
//2011-7-25 zhangying (function(){ function load_script(xyUrl, callback){ var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = xyUrl; //借鉴了jQuery的script跨域方法 script.onload = script.onreadystatechange = function(){ if((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")){ callback && callback(); // Handle memory leak in IE script.onload = script.onreadystatechange = null; if ( head && script.parentNode ) { head.removeChild( script ); } } }; // Use insertBefore instead of appendChild to circumvent an IE6 bug. head.insertBefore( script, head.firstChild ); } function transMore(points,type,callback){ var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from=" + type + "&to=4&mode=1"; var xs = []; var ys = []; var maxCnt = 20;//每次发送的最大个数 var send = function(){ var url = xyUrl + "&x=" + xs.join(",") + "&y=" + ys.join(",") + "&callback=callback"; //动态创建script标签 load_script(url); xs = []; ys = []; } for(var index in points){ if(index % maxCnt == 0 && index != 0){ send(); } xs.push(points[index].lng); ys.push(points[index].lat); if(index == points.length - 1){ send(); } } } window.BMap = window.BMap || {}; BMap.Convertor = {}; BMap.Convertor.transMore = transMore; })();
3,单个转换函数与批量转换函数 整合体
(function(){ //闭包 function load_script(xyUrl, callback){ var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = xyUrl; //借鉴了jQuery的script跨域方法 script.onload = script.onreadystatechange = function(){ if((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")){ callback && callback(); // Handle memory leak in IE script.onload = script.onreadystatechange = null; if ( head && script.parentNode ) { head.removeChild( script ); } } }; // Use insertBefore instead of appendChild to circumvent an IE6 bug. head.insertBefore( script, head.firstChild ); } function translate(point,type,callback){//单个转换 var callbackName = 'cbk_' + Math.round(Math.random() * 10000); //随机函数名 var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from="+ type + "&to=4&x=" + point.lng + "&y=" + point.lat + "&callback=BMap.Convertor." + callbackName; //动态创建script标签 load_script(xyUrl); BMap.Convertor[callbackName] = function(xyResult){ delete BMap.Convertor[callbackName]; //调用完需要删除改函数 var point = new BMap.Point(xyResult.x, xyResult.y); callback && callback(point); }; } function transMore(points,type,callback){//批量转换 var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from=" + type + "&to=4&mode=1"; var xs = []; var ys = []; var maxCnt = 30;//每次发送的最大个数 var send = function(){ var url = xyUrl + "&x=" + xs.join(",") + "&y=" + ys.join(",") + "&callback=callback"; //动态创建script标签 load_script(url); xs = []; ys = []; }; for(var index in points){ if(index % maxCnt == 0 && index != 0){ send(); } xs.push(points[index].lng); ys.push(points[index].lat); if(index == points.length - 1){ send(); } } } window.BMap = window.BMap || {}; BMap.Convertor = {}; BMap.Convertor.translate = translate; BMap.Convertor.transMore = transMore; })();
另外附上两个接口使用的示例源代码
单个转换的接口
批量转换的示例接口
本文转载地址:点击打开链接阅读全文
1 0
- 百度地图 坐标偏移、覆盖物偏移解决方案
- 百度地图自定义坐标标识覆盖物,随地图缩放偏移解决办法
- 百度地图坐标偏移的纠正
- 百度坐标偏移
- GPS坐标 转换偏移 成百度地图 坐标
- 百度地图坐标在地图上发生偏移
- [WebGIS] 地图坐标偏移问题
- android 使用百度地图偏移问题及解决方案
- 谷歌地图、百度地图偏移解决方法
- 关于百度定位获取到的BD2坐标对WGC坐标的偏移解决方案
- google map 的地图偏移 火星坐标
- 互联网地图坐标偏移的解决方法
- google map 的地图偏移 火星坐标
- GPS经纬度及谷歌地图坐标转换为百度地图坐标,解决地图显示经纬度的偏移问题
- 地图选择及地图偏移解决方案
- 解决Android使用百度定位坐标显示到地图上偏移过大问题
- android跳转手机百度高德腾讯谷歌地图、地图传坐标、坐标偏移、base64解码相关
- 关于百度地图偏移的问题
- linux分析apache日志,如访问次数最多的前10个IP、访问超过100次的页面
- 开机自动执行脚本 与 update-rc.d
- Android开发之常用代码片段
- ArcGIS10.2 因空间索引导致数据编辑保存速度慢问题
- maven依赖本地jar方法
- 百度地图 坐标偏移、覆盖物偏移解决方案
- facebook darkforest围棋ai测试
- Android webview长按图片保存到本地
- unix域套接字-高级进程间通信
- Web页面实现生成附件显示到下载栏
- 生成式对抗网络(GAN)综述
- Java面试题全集(上)
- SDUT-1273-->面向对象程序设计上机练习十一(运算符重载)
- 【转载】图解冒泡排序