原文:关于百度地图API的地图坐标转换问题

我在之前的文章利用html5获取经纬度并且在百度地图中显示位置中使用了百度地图的API来显示html5获取的地理位置,在文中我说过这样的话,我说百度地图的准确度不怎么精确,偏差很大。这里我要更正下:

国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理位置进行首次加密。百度坐标在此基础上,进行了BD-09二次加密措施,更加保护了个人隐私。百度对外接口的坐标系并不是GPS采集的真实经纬度,需要通过坐标转换接口进行转换。

由此可以看出小编之前冤枉了百度地图,所以如果对您有误导还请见谅。所以写了篇关于百度地图API坐标转换的文章,并且对之前的模型做了修正。

实现代码:

 //在百度 map中显示地址
var map = new BMap.Map("map_canvas");
var point = new BMap.Point(longitudeP , latitudeP); // 创建点坐标
map.centerAndZoom(point, 15);// 初始化地图,设置中心点坐标和地图级别
var marker = new BMap.Marker(point);
map.addOverlay(marker);
BMap.Convertor.translate(point,0,translateCallback); //真实经纬度转成百度坐标

回调函数代码:

 //坐标转换完之后的回调函数
function translateCallback(point1){
var marker1 = new BMap.Marker(point1);
map.addOverlay(marker1);
var label = new BMap.Label("转换后的百度坐标",{offset:new BMap.Size(20,-10)});
marker1.setLabel(label); //添加百度label
map.setCenter(point1);
}

这是新的效果图:

可以看出转换出的效果还是相当精确的,并且从我这里的demo来看要比谷歌地图精确的多!所以如果也有像我一样的用户发现调用baidu map坐标有偏差的话,很有可能就是没有进行坐标转换。

关于这个demo:

在线查看demo

demo代码:

 <!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>GIS开发利用html5获取经纬度并在百度地图中查看</title>
<!--加载百度 map api-->
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.5&ak=8827ee39511568ac0705d037d67b2624"></script>
<script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>
</head> <body>
<span id="support">将下面的经纬度输入谷歌地图:</span>
<div id="show">
纬度:<span id="latitude"></span><br />
经度:<span id="longitude"></span><br />
准确度:<span id="accuracy"></span>
</div>
<div id="map_canvas" style="width:500px; height:500px;"></div>
<script type="text/javascript">
var doc = document,
latitude = doc.getElementById('latitude'),
longitude = doc.getElementById('longitude'),
accuracy = doc.getElementById('accuracy'),
support = doc.getElementById('support'),
showDiv = doc.getElementById('show');
var map = new BMap.Map("map_canvas");
function lodeSupport(){
if(navigator.geolocation){
support.innerHTML = '将下面的经纬度输入谷歌地图(纬度 经度)查看自己位置:';
showDiv.style.display = 'block';
navigator.geolocation.getCurrentPosition(updataPosition);
}else{
support.innerHTML = '对不起,浏览器不支持!';
showDiv.style.display = 'none';
}
}
function updataPosition(position){
var latitudeP = position.coords.latitude,
longitudeP = position.coords.longitude,
accuracyP = position.coords.accuracy;
latitude.innerHTML = latitudeP;
longitude.innerHTML = longitudeP;
accuracy.innerHTML = accuracyP;
//在百度 map中显示地址 var point = new BMap.Point(longitudeP , latitudeP); // 创建点坐标
map.centerAndZoom(point, 15);// 初始化地图,设置中心点坐标和地图级别
var marker = new BMap.Marker(point);
map.addOverlay(marker);
BMap.Convertor.translate(point,0,translateCallback); //真实经纬度转成百度坐标 }
//坐标转换完之后的回调函数
function translateCallback(point1){
var marker1 = new BMap.Marker(point1);
map.addOverlay(marker1);
var label = new BMap.Label("转换后的百度坐标",{offset:new BMap.Size(20,-10)});
marker1.setLabel(label); //添加百度label
map.setCenter(point1);
} window.addEventListener('load', lodeSupport , true);
</script>
</body>
</html>

转载自:http://malagis.com/baidu-maps-api-map-coordinate-conversion.html

关于百度地图API的地图坐标转换问题的更多相关文章

  1. ***微信LBS地理位置开发+百度地图API(地理位置和坐标转换)

    微信公众平台开发 - 获取用户地理位置 本文介绍在微信公众平台上如何使用高级接口开发获取用户地理位置的功能. 一.获取用户地理位置接口 开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会 ...

  2. 百度地图API自定义地图

    http://api.map.baidu.com/lbsapi/creatmap/index.html http://developer.baidu.com/map/index.php?title=w ...

  3. 网页嵌入百度地图和使用百度地图api自定义地图的详细步骤

    在网页中插入百度地图 如果想在自己的网页上面加入百度地图的话,可以用百度地图的api.具体使用方法如下: 第一步:进入百度创建地图的网站http://api.map.baidu.com/lbsapi/ ...

  4. 百度地图API地理位置和坐标转换

    1.由地名(省份.城市.街道等)得到其对应的百度地图坐标: http://api.map.baidu.com/geocoder/v2/?output=json&ak=你从百度申请到的Key&a ...

  5. 百度地图api根据地图缩放等级显示不同的marker点,功能二

    功能一里面有marker点后台的代码 根据地图的缩放等级显示不同marker点的坐标JSP代码 <%@ page language="java" contentType=&q ...

  6. HTML5结合百度地图API创建地图应用

    具体的百度地图API的使用方法查看百度地图API里的DEMO <style> #div1{ width:400px; height:400px; border:1px #000 solid ...

  7. js调用百度地图API创建地图,搜索位置

    实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <met ...

  8. JavaScript对接百度地图api实现地图标点功能

    粗略的做了个地图标点功能 首先,去百度注册开发者账号,然后进入到百度地图开放平台 进入到控制台, 创建浏览器端应用,给个安全域名 然后去开发者文档JavaScript里面找地图展示文档,直接怼上去就行 ...

  9. 百度地图API实现地图定位

    1.引用JS: <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0& ...

随机推荐

  1. SecureCRT自动断开连接的问题

    直接在虚拟机上ssh道实验室的服务器时并没有发现过上一段时间不操作就会断开,可能是我没有注意,也能是操作时间间隔比较短. 但是在secureCRT上登录时,发现经常的断开,很是郁闷,所以baidu了一 ...

  2. Apache优化:修改最大并发连接数

    http://www.365mini.com/page/apache-concurrency-configuration.htm Apache是一个跨平台的web服务器,由于其简单高效.稳定安全的特性 ...

  3. eclipse怎么切换SVN的用户

    在用eclipse的时候会经常用到SVN来进行代码的版本控制,为了方便起见,我们会保存密码,从此之后就不会再出现输入或者修改用户名和密码的地方了,这时候想切换用户怎么办,在本地操作的一种方法是删除SV ...

  4. ubuntu中下运行asp.net程序

    首先在ubuntu下面是不能直接运行VISUAL STUTIO的,必须借助mono开发工具和xsp4.0.那我们就来看一下在ubuntu的电脑中怎么安装这两个工具. 首先安装mono,打开终端,输入a ...

  5. iOS开发——图片轮播图+单选选项

    由于公司开发需要,需要滚动每道评测题, 并且一道评测题单项选择,按钮和文字都可点击选中 (单选比多选复杂一点,但是原理差不多) 1.当初任务紧,代码也没有优化,仅供思路参考,先放几张图 2.代码部分 ...

  6. Java实现HTML代码生成PDF文档

    1.IText实现html2pdf,速度快,纠错能力差,支持中文(要求HTML使用unicode编码),但中支持一种中文字体,开源. 2.Flying Sauser实现html2pdf,纠错能力差,支 ...

  7. Java多线程间通信-解决安全问题、等待唤醒机制

    /*1.增加一个知识点一个类怎么在所有的类中,让其它类来共同修改它的数据呢?可以用单例设计模式可以用静态可以在其它类中做一个构造函数,接受同一个对象,这样就可以实现对象 2.状态选择可以用数字0 1 ...

  8. mac安装软件运行提示「xxx.app已损坏,打不开.你应该将它移到废纸篓」的解决办法

    「xxx.app已损坏,打不开.你应该将它移到废纸篓」,其实并非你安装的软件已损坏,而是Mac系统的安全设置问题,往往这些软件可能是经过了汉化或者破解,所以被Mac认为「已损坏」,那么解决方法就是临时 ...

  9. makefile--Unfound symbol

    Unfound symbol ,库函数的包含问题或者头文件包含问题 makefile对#的识别度太低了,如果使用了,#它之后的可能就不能识别了,然后会报错的Unfound symbol /////// ...

  10. linux下screen工具的简单使用

    有时候,希望即使退出终端了,下次登录linux的时候,还能回到程序的控制界面,这个时候,screen工具就很有用了例如,写了一个从控制台读取屏幕输入的程序input_test,如果从终端退出了,下次登 ...