高德地图经纬度查询怎么能打出经纬度?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&百度地图,高德地图,HTML5经纬度比较
对于一个地点的经纬度,是确定的?这个问题,我想很多人都会回答,肯定了,可实际上呢?我只能呵呵了。
在使用百度地图的过程中,发现一个很奇怪的现象,有时候调用百度地图js API时,后得到一个错的离谱的地方。然后我自己也就研究了一下jsAPI获取地理位置的相关信息,jsAPI其实都是利用了HTML5中的方法获取地理信息的。但很奇怪,使用HTML5获取到的经纬度和百度获取的竟然相差很大。
HTML5获取到的经纬度
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
else {alert( Geolocation is not supported by this browser.) }
function showPosition(position)
$(#lngl).val(position.coords.longitude );
$(#latl).val(position.coords.latitude);
百度地图获取经纬度的方法
// 百度地图API功能
var map = new BMap.Map(allmap);
var circle = new BMap.Geolocation();
var options={};
options.enableHighAccuracy=
options.timeout=10;
options.maximumAge=0;
circle.getCurrentPosition(locationResult, options);
//enableHighAccuracy Boolean 要求获取最佳结果。,timeout Number 超时时间。,maximumAge Number 允许返回指定时间内的缓存结果。如果此值为0,则浏览器将立即获取新定位结果。
map.addOverlay(circle);
var tempGeocoder = new BMap.Geocoder();
function locationResult(geolocationResult) {
var Status = this.getStatus()
if (Status == 0)//检索成功。对应数值&0&。
$(#lngBaidu).val(geolocationResult.point.lng);
$(#latBaidu).val(geolocationResult.point.lat);
var address = geolocationResult.
$(#cityBaidu).val(address.city);
$(#districtBaidu).val(address.district);
$(#streetBaidu).val(address.street);
alert(定位失败错误码 + Status)
高德地图获取经纬的方法
// 高德地图API功能
var mapObj,
mapObj = new AMap.Map(&#39;allmap1&#39;);
mapObj.plugin(&#39;AMap.Geolocation&#39;, function () {
geolocation = new AMap.Geolocation({
enableHighAccuracy: true, //是否使用高精度定位,默认:true
timeout: 10000,
//超过10秒后停止定位,默认:无穷大
maximumAge: 0,
//定位结果缓存0毫秒,默认:0
convert: false,
//自动偏移坐标,偏移后的坐标为高德坐标,默认:true
showButton: false,
//显示定位按钮,默认:true
buttonPosition: &#39;LB&#39;,
//定位按钮停靠位置,默认:&#39;LB&#39;,左下角
buttonOffset: new AMap.Pixel(10, 20), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
showMarker: false,
//定位成功后在定位到的位置显示点标记,默认:true
showCircle: false,
//定位成功后用圆圈表示定位精度范围,默认:true
panToLocation: true,
//定位成功后将定位到的位置作为地图中心点,默认:true
zoomToAccuracy: true
//定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
mapObj.addControl(geolocation);
AMap.event.addListener(geolocation, &#39;complete&#39;, onComplete); //返回定位信息
AMap.event.addListener(geolocation, &#39;error&#39;, onError);
//返回定位出错信息
geolocation.getCurrentPosition();
function onComplete(data) {
var lnglatXY = [data.position.getLng(), data.position.getLat()];
$(#accuracy).val(data.accuracy);
$(#lng).val(data.position.getLng());
$(#lat).val(data.position.getLat());
function onError(data) {
var str = &#39;定位失败;&#39;;
str += &#39;错误信息:&#39;
switch () {
case &#39;PERMISSION_DENIED&#39;:
str += &#39;浏览器阻止了定位操作&#39;;
case &#39;POSITION_UNAVAILBLE&#39;:
str += &#39;无法获得当前位置&#39;;
case &#39;TIMEOUT&#39;:
str += &#39;定位超时&#39;;
str += &#39;未知错误&#39;;
alert(str);
使用这三种方法获取的经纬度竟然有很大不同!!
小数点后第一位就有可能不一样了,小数点后第二位是肯定不一样的,0.01的偏差就会导致几十公里的偏差,测试多次依然是这样。
最后在百度地图的官方文档找到了这样的的话
百度地图坐标转换API是一套以HTTP形式提供的坐标转换接口,用于将常用的非百度坐标(目前支持GPS设备获取的坐标、google地图坐标、soso地图坐标、amap地图坐标、mapbar地图坐标)转换成百度地图中使用的坐标,并可将转化后的坐标在百度地图Script API、车联网API、静态图API、web服务API等产品中使用。注意 SDK、iOS SDK、定位SDK和导航SDK坐标转换服务需单独申请
百度地图官方文档
才知道HTML5得到的数据是需要转化之后才是百度地图的经纬度。难怪测试了很多次,几乎都有这么大的偏差。
HTML5经纬度转化为百度地图经纬度的方法:
var ggPoint = new BMap.Point(position.coords.longitude, position.coords.latitude);//HTML5的经纬度
var convertor = new BMap.Convertor();
var pointArr = [];
pointArr.push(ggPoint);
convertor.translate(pointArr, 1, 5, translateCallback)
//坐标转换完之后的回调函数
translateCallback = function (data) {
if (data.status === 0) {
data.points[0];
//转换后的百度坐标(正确)
$(#lngz).val(data.points[0].lng);
$(#latz).val(data.points[0].lat);
经过这么转化后,偏差基本上在小数点后前三位基本上都一样了。
经过测试发现,高德地图似乎直接使用了HTML5返回的经纬度,但没找到相关的文档,百度地图使用的是转化过的经纬度。一个简单的经纬度问题却由于各种原因导致了这么一个背离常识的问题,实在是令人难以理解!!
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
近来由于工作需要,需要提取某些城市的经纬度坐标,稍微搜索了一下,发现百度地图和高德地图都提供了相关的函数和例子.那么剩余的工作也就比较简单了,保存坐标,然后转换为WGS坐标,这样才能和现有的GPS数据以及地图匹配.
主要问题和解决方法
本地保存文件跨浏览器支持
由于安全的原因,JavaScript本地保存文件的方式通常都只有IE支持的ActiveXObject/Open方法,每次都要提示不安全和允许运行,非常麻烦.好在其他浏览器目前都支持&a&标签实现文件下载的方法.经测试最新的Google Chrome, Mozilla Firefox,百度浏览器,360浏览器下都可以运行.不说废话,直接上代码:
function Download() {
if(/msie/i.test(navigator.userAgent)) {
var w = window.open(&&, &导出&,&height=0,width=0,toolbar=no,menubar=no,scrollbars=no,resizable=on,location=no,status=no&);
var&filename&=&document.getElementById(&filename&).value&;
var&content&=&document.getElementById(&content&).
w.document.charset&=&&UTF-8&;
w.document.write(content);
w.document.execCommand(&SaveAs&,&false,&filename+&#39;.txt&#39;);
w.close();
//&Firefox/Chrome/Safari/Opera
var&filename&=&document.getElementById(&filename&).value&;
var&content&=&document.getElementById(&content&).
str&=&encodeURIComponent(content);&
document.getElementById(&SaveChrome&).download&=&filename+&#39;.txt&#39;;&
var&aLink&=document.getElementById(&SaveChrome&) ;
aLink.href = &data:text/charset=utf-8,&+
aLink.click();
经纬度转换
这个话题感兴趣的朋友可以自己搜索火星坐标相关转换,精度在1m范围的网上提供有服务可以免费使用.自写程序经验证精度在6m 以内.
百度地图方法
关键函数是 BMap.Boundary() 生成的类,调用它的方法get就可以通过名称获得县或市级以上的行政区域.
function getBoundary() {
var bdary = new BMap.Boundary();
var name = document.getElementById(&districtName&).
bdary.get(name, function (rs) { //获取行政区域
var fileName = &&;
var newFileObject = fso.CreateTextFile(folderName + &\\& + name + &.txt&, true);
map.clearOverlays(); //清除地图覆盖物
var count = rs.boundaries. //行政区域的点有多少个
for (var i = 0; i & i++) {
var ply = new BMap.Polygon(rs.boundaries[i], { strokeWeight: 2, strokeColor: &#ff0000& }); //建立多边形覆盖物
map.addOverlay(ply); //添加覆盖物
map.setViewport(ply.getPath()); //调整视野
newFileObject.write(rs.boundaries[0]);
newFileObject.Close();
关键代码通过阅读示例文件可以发现在下拉列表返回里面有边界值的出现.
amapAdcode.search = function(adcodeLevel, keyword, selectId) {//查询行政区划列表并生成相应的下拉列表
if (adcodeLevel == &#39;district&#39;||adcodeLevel == &#39;city&#39;) {//第三级时查询边界点
this._district.setExtensions(&#39;all&#39;);
this._district.setExtensions(&#39;base&#39;);
this._district.setLevel(adcodeLevel); //行政区级别
this._district.search(keyword, function(status, result) {//注意,api返回的格式不统一,在下面用三个条件分别处理
var districtData = result.districtList[0];
if (districtData.districtList) {
me.createSelectList(selectId, districtData.districtList);
} else if (districtData.districts) {
me.createSelectList(selectId, districtData.districts);
document.getElementById(selectId).innerHTML = &#39;&#39;;
map.setCenter(districtData.center);
me.clearMap();
me.addPolygon(districtData.boundaries);
其中的districtData.boundaries 就是我们需要的.调试了一下,大胆猜测果然是实现了Tostring() 方法的一个对象.
&104.....997,104.647748...& 很明显的就是我们需要的gcj坐标.
至此,基本也就没有什么问题了,剩余的工作就是解析得到的文件.需要提取全国的数据也就是循环读取全国城市列表文件了.(通常搜索cityname,电脑里面都会找到的,原因,呵呵,猜测是迅雷,QQ之类的IP定位需要吧.)
重要的一点,推荐使用高德地图,原因就是百度地图得到的行政规划有问题,不包含县级市.最典型的就是贵州省,很多地市都是分离的,是带岛或洞的复杂多边形.百度在这里完败.关于怎么处理这里复杂的多边形以支持在MapWinGIS显示和处理,下次会写一篇笔记.
相关报道:
本站地址:
关键词: &&
责任编辑:
已有位网友参与评论
本类周最热
分类导航: |
软件名称软件类别好评率
本站所有资源均来自互联网,本站只做收集,如本站侵犯到您的版权请发送邮件给我们,我们收到邮件后会在第一时间删除!商务QQ:1674653
Copyright (C)&&&&使用高德获取经纬度
使用高德获取经纬度
使用了高德地图,不显示地图界面,只是直接获取经纬度值,直接调用里面的工具类即可
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
移动开发下载排行(window.slotbydup=window.slotbydup || []).push({
id: '2081942',
container: s,
size: '1000,60',
display: 'inlay-fix'}

我要回帖

更多关于 高德地图怎么看经纬度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信