求教坐标转换方法convertor.translate参数的各个参数的意思

> 百度map的坐标(北斗与GPS)转换有关问题
百度map的坐标(北斗与GPS)转换有关问题
liuyangxian & &
发布时间: & &
浏览:1 & &
回复:0 & &
悬赏:0.0希赛币
百度地图的坐标(北斗与GPS)转换问题
  先声明,这里的坐标转换api是JS交互的。
  看过百度地图api的童鞋知道有个方法,可以将北斗或GPS的坐标转换为百度地图的球面坐标。
  方法名称为:BMap.Convertor.translate(point,0,translateCallback);
  具体参数就不解释了,请谷歌百度一下吧。
  我想说的是,这个方法是一个回调的方法,point是北斗或GPS的坐标点,当坐标转换完成后使用translateCallback这个回调方法传回改变后的坐标点。
  我很好奇为何需要用回调的方式来转换坐标点?直接给一个转换公式不是更好吗?
  看代码。如果要使用BMap.Convertor.translate必须引入convertor.js,坐标转换的玄机就在这了
  convertor.js的代码不多就30多行,看了老半天都没发现有什么坐标转换的公式
  但有个意外收获,发现如下语句:
  var xyUrl = ""+ type + "&to=4&x=" + point.lng + "&y=" + point.lat + "&callback=BMap.Convertor." + callbackN瞬间发现上当了,终于明白为什么要使用回调这么麻烦的方法来完成坐标转换的问题了。
  原来坐标的转换的公式根本就不想给你看到,百度转换坐标的方法是这样的:
  1 获取原始的北斗或GPS的坐标值2 将坐标点发送到ap/ag/coord/convert ...3 有返回值后调用回调函数,将转换后的坐标点给你
  这使用回调是因为需要向另外一个地址请求处理,是异步的操作。
  实验一下这个链接,返回如下:
  {"error":0,"x":"MTA4LjI5Njc5Mzc.....","y":"MjIuODQzMTM2MDE....."}
  ps:没有传入 callback=BMap.Convertor值。值不完全我省略了,不然你就知道我在哪了。
  这个结果貌似有点出人意料,x和y的值并非我们想想要的坐标点
  做个测试:
  test_point = new BMap.Point("MTA4LjI5Njc5Mzc.....", "MjIuODQzMTM2MDE.....");alert(test_point.lng + ":" + test_point.lat);
  发现其实这些值是编码后的坐标点,不管是什么编码方式,用百度的API是可以解读的
  现在终于知道百度坐标点是如何完成转换的了。(其实还是不知道,看不到服务器的代码。。。)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&当前位置: →
→ 百度map的坐标北斗与GPS转换有关问题
百度map的坐标北斗与GPS转换有关问题
& 作者:佚名 & 来源: 互联网 & 热度:
&收藏到→_→:
摘要: 百度地图的坐标(北斗与GPS)转换问题 先声明,这里的坐标转换api是JS交互的。
看过百度地图api的童鞋知道有个方法,可以将...
"百度map的坐标北斗与GPS转换有关问题"::
百度地图的坐标(北斗与gps)转换问题
先声明,这里的坐标转换api是js交互的。
看过百度地图api的童鞋知道有个方法,可以将北斗或gps的坐标转换为百度地图的球面坐标。
方法名称为:bmap.convertor.translate(point,0,translatecallback);
具体参数就不解释了,请谷歌百度一下吧。
我想说的是,这个方法是一个回调的方法,point是北斗或gps的坐标点,当坐标转换完成后使用translatecallback这个回调方法传回改变后的坐标点。
我很好奇为何需要用回调的方式来转换坐标点?直接给一个转换公式不是更好吗?
看代码。如果要使用bmap.convertor.translate必须引入convertor.js,坐标转换的玄机就在这了
convertor.js的代码不多就30多行,看了老半天都没发现有什么坐标转换的公式
但有个意外收获,发现如下语句:
var xyurl = "http://api./ag/coord/convert?from="+ type + "&to=4&x=" + point.lng + "&y=" + point.lat + "&callback=bmap.convertor." +瞬间发现上当了,终于明白为什么此文来自: 马开东博客
转载请注明出处 网址:
要使用回调这么麻烦的方法来完成坐标转换的问题了。
原来坐标的转换的公式根本就不想给你看到,百度转换坐标的方法是这样的:
1 获取原始的北斗或gps的坐标值2 将坐标点发送到api./ag/coord/convert?...3 有返回值后调用回调函数,将转换后的坐标点给你
这使用回调是因为需要向另外一个地址请求处理,是异步的操作。
实验一下这个链接,返回如下:
{"error":0,"x":"mta4lji5njc5mzc.....","y":"mjiuodqzmtm2mde....."}
ps:没有传入 callback=bmap.convertor值。值不完全我省略了,不然你就知道我在哪了。
这个结果貌似有点出人意料,x和y的值并非我们想想要的坐标点
做个测试:
test_point = new bmap.point("mta4lji5njc5mzc.....", "mjiuodqzmtm2mde.....");alert(test_point.lng + ":" + test_point.lat);
发现其实这些值是编码后的坐标点,不管是什么编码方式,用百度的api是可以解读的
现在终于知道百度坐标点是如何完成转换的了。(其实还是不知道,看不到服务器的代码。。。)
http://my.oschina.net/u/782560/blog/121615
搜索此文相关文章:此文来自: 马开东博客
网址: 站长QQ
上一篇:没有了
百度map的坐标北斗与GPS转换有关问题_Web前端相关文章
Web前端_总排行榜
Web前端_最新
Web前端_月排行榜
Web前端_周排行榜
Web前端_日排行榜11413人阅读
百度地图api(1)
1.改写百度提供的批量转化js,实现一次请求100个坐标点
2.利用递归回调控制坐标转换的回传顺序,保证先请求的一组坐标(一组100个)先到达
首先我们来看一下百度地图api的demo里有两个坐标转换的例子:
&&&&&&& 原始坐标转换成百度坐标:
&&&&&&& 批量坐标转换:
&&&&&& &他们都使用了一个方法BMap.Convertor.translate(pointArr,&0, translateCallback);或者方法BMap.Convertor.transMore(pointsArray[posIndex], 0, callback);
&&&&&&& 他们分别由百度提供的两个js实现:(单个坐标转换接口)和(这是批量转换接口),这里0表示转换前是GPS设备获取的角度坐标,方法里默认的type=4是转换后的百度地图采用的经纬度坐标,函数里mode=1表示是批量转换,但实际上从源码里获知,批量转换仍然受到一次只能请求20个坐标点的转换。
&&&&&&& 所以我们改写百度提供的js文件,直接使用它的原生坐标转换api:&这里有关于这个api的参数的详尽解释,它一次请求的坐标数限制是100个。服务地址是:?例如,我们可以这样请求:
var positionUrl = &;
下面我们实现自己的批量坐标转换(一次请求100个坐标点)
上面方法里引用的其它函数我们依然沿用百度提供的js的一些方法:
2.使用上面的坐标转换方法myTransMore
假设testJsonStr 可能是你要处理的一些位置信息,例如是这样的json对象数组:
var testJsonStr = [ //1000条数据
&&&& {&deviceId&:&0001&, &name&: &0001&, &longitude&:116.174008, &latitude&:40.059728, &time&:& 16:19:51&},
&&&& {&deviceId&:&0002&, &name&: &0002&, &longitude&:116.172708, &latitude&:40.0603688, &time&:& 15:44:36&},
&&&& {&deviceId&:&0003&, &name&: &0003&, &longitude&:116.174535, &latitude&:40.059727, &time&:& 09:31:19&},
&&&&&& &......
&&&& {&deviceId&:&1000&, &name&: &1000&, &longitude&:116., &latitude&:39.981656, &time&:& 16:59:34&}&]
利用递归回调控制坐标转换后回传的数据的顺序,使得先发出的坐标转换请求得到的数据先到达程序,如果不做控制,由于网络的原因,有可能后发的请求转换的数据却先到达了程序,这样你就不知道传回来的数据是谁的响应,即找不到纠偏后的坐标与纠偏前的坐标的对应关系了。



&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:53149次
积分:1367
积分:1367
排名:千里之外
原创:79篇
转载:15篇
(1)(1)(1)(4)(2)(3)(14)(51)(4)(1)(5)(1)(1)(3)(1)(2)利用百度地图API实现gps坐标到百度坐标的批量坐标转换(如1000个点)
利用百度地图API实现gps坐标到百度坐标的批量坐标转换(如1000个点)
百度地图api
1.改写百度提供的批量转化js,实现一次请求100个坐标点
2.利用递归回调控制坐标转换的回传顺序,保证先请求的一组坐标(一组100个)先到达
首先我们来看一下百度地图api的demo里有两个坐标转换的例子:
&&&&&&& 原始坐标转换成百度坐标:
&&&&&&& 批量坐标转换:
&&&&&& &他们都使用了一个方法BMap.Convertor.translate(pointArr,&0, translateCallback);或者方法BMap.Convertor.transMore(pointsArray[posIndex], 0, callback);
&&&&&&& 他们分别由百度提供的两个js实现:(单个坐标转换接口)和(这是批量转换接口),这里0表示转换前是GPS设备获取的角度坐标,方法里默认的type=4是转换后的百度地图采用的经纬度坐标,函数里mode=1表示是批量转换,但实际上从源码里获知,批量转换仍然受到一次只能请求20个坐标点的转换。
&&&&&&& 所以我们改写百度提供的js文件,直接使用它的原生坐标转换api:&这里有关于这个api的参数的详尽解释,它一次请求的坐标数限制是100个。服务地址是:?例如,我们可以这样请求:
var positionUrl = &;
下面我们实现自己的批量坐标转换(一次请求100个坐标点)
上面方法里引用的其它函数我们依然沿用百度提供的js的一些方法:
2.使用上面的坐标转换方法myTransMore
假设testJsonStr 可能是你要处理的一些位置信息,例如是这样的json对象数组:
var testJsonStr = [ //1000条数据
&&&& {&deviceId&:&0001&, &name&: &0001&, &longitude&:116.174008, &latitude&:40.059728, &time&:& 16:19:51&},
&&&& {&deviceId&:&0002&, &name&: &0002&, &longitude&:116.172708, &latitude&:40.0603688, &time&:& 15:44:36&},
&&&& {&deviceId&:&0003&, &name&: &0003&, &longitude&:116.174535, &latitude&:40.059727, &time&:& 09:31:19&},
&&&&&& &......
&&&& {&deviceId&:&1000&, &name&: &1000&, &longitude&:116., &latitude&:39.981656, &time&:& 16:59:34&}&]
利用递归回调控制坐标转换后回传的数据的顺序,使得先发出的坐标转换请求得到的数据先到达程序,如果不做控制,由于网络的原因,有可能后发的请求转换的数据却先到达了程序,这样你就不知道传回来的数据是谁的响应,即找不到纠偏后的坐标与纠偏前的坐标的对应关系了。



我的热门文章
即使是一小步也想与你分享

我要回帖

更多关于 convertor.translate 的文章

 

随机推荐