Rover's Official Blog

Map/GPS/GIS/WebMap

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  47 随笔 :: 0 文章 :: 437 评论 :: 41 引用

因为有一朋友问起这个问题,我找了下,今天就发出来看看吧,不知道说的对不对。
不过对于Mapbar这样处理的方法我个人觉得还是很值得学习的,至少不会给你明码的坐标。
不知道Mapbar的朋友看了会不会找我说我那,呵呵,不过没关系,最近想写篇文章给你们些个人的小小的建议,觉得说的不好也无妨。忙完这阵子就写。

下面是Mapbar中的加密和解密部分的JS,我做了简单说明了,什么36进制又16进制的,看的我也头晕。
实例的结果是这样的:
IJSDSBWVJABFA解密后的值:121.46979,31.23245
31.23245,121.46979加密后的值:IJSDSBZVJABFA
当然你也可以用其他坐标来测试和检验。
友情提醒:Mapbar中的那个常量值可能已经变动了,用现在方法解出来的和百度的值是不一样的。
下面的代码复制后保存为网页形式就可以看到效果。

Mapbar中的加密和解密(JS)
posted on 2006-06-06 23:05 Rover.Tang 阅读(2958) 评论(31)  编辑 收藏 网摘

评论

#1楼  2006-06-07 20:38 maxmore [未注册用户]
谢谢老兄。把你那个代码转换后,mapbar地图切割按照坐标值来命名时,好象和实际的有些出入。
  回复  引用    

#2楼 [楼主] 2006-06-07 23:13 浪人|努力      
@maxmore
出入大概是0.00001度这个样子,测试过了,没有太大的问题。
  回复  引用  查看    

#3楼  2006-06-08 22:40 maxmore [未注册用户]
我怎么测量出的结果有近1度的出入呢?是mapinfo中的投影设错了?

另外,你在代码中使用addPoint()函数加入信息点,那么我想当我双击地图时(现在是将该点设成中心点,还没找到设成中心点是哪个函数),我该怎样调用addPoint()来加入一个点呢?怎么取得该点的坐标(不管是加密的也好,还是经纬度也好)?那么又如何适应不同比例尺的图片呢?

这些问题在GIS软件中似乎都很简单,而应用到这种切割后的图片时,似乎又回到了投影问题。

真不好意思,这种地图不懂的太多了,似乎总是我在向你提问,盼你别烦才好。
  回复  引用    

#4楼 [楼主] 2006-06-09 21:54 浪人|努力      
@maxmore
呵呵,被你这么一说看了下JS代码,觉得他们用的方法很简单也很好啊。容器是有属性和方法的。从属性中就可以获得点的坐标,稍微计算下即可。至于调用ADDPOINT,一个BUTTON就可以啊,再SETMODE下就可以。至于适应不同比例尺就更Easy了,不同比例尺用的是不同的图片,比例尺也就那么几个比例尺,看放大缩小的轴就可以看到多少个比例尺了。
至于您说的有1度的出入,觉得是不可能的,但是算了下大概相差不大,主要是在测量的时候他们取的位数太少了,小数点后一位,这样的情况下导致您认为有这么多的误差是很正常,加上一度等于100公里也有误差那。
好了,不多说,既然懂代码还是多看代码比较好。呵呵。
  回复  引用  查看    

#5楼  2006-06-10 11:42 fly_in+sky [未注册用户]
@浪人|努力
请问,可否将“稍微计算下即可。”写的详细些呢,呵呵,期待中。
  回复  引用    

#6楼  2006-06-10 11:52 fly_in+sky [未注册用户]

this.p=function(meT)/*解密代码*/
{
var W7pj=-1;
var I524S=0;
var qk_X='';
for(var i=0;i<meT.length;i++)
{
var j86T=parseInt(meT.charAt(i),36)-10;
if(j86T>=10)j86T=j86T-7;
qk_X+=(j86T).toString(36);
if(j86T>I524S)
{
W7pj=i;
I524S=j86T
}
}
var U8T=parseInt(qk_X.substring(0,W7pj),16);
var f9v8D=parseInt(qk_X.substring(W7pj+1),16);
var H1433=new Array();
H1433[0]=(U8T+f9v8D-parseInt(strLicenseKey))/2;
H1433[1]=(f9v8D-H1433[0])/100000.0;
H1433[0]/=100000.0;
return H1433
};@浪人|努力

  回复  引用    

#7楼  2006-06-10 11:54 fly_in+sky [未注册用户]
@浪人|努力
从属性中就可以获得点的坐标
比较轻松,可是稍微计算下这个过程就比较难了。
稍微计算下即可。
  回复  引用    

#8楼 [楼主] 2006-06-10 12:18 浪人|努力      
function AVMaplet(AUF5_,xh53v,yQ2g,rF24,n65D,$3n5,UdL,Dfk5V,hp9h)
{
this.uO14=0;
this.HM_=0;
this.GB5e=0;
this.TMJ=0;
this.cq75=0;
this.vE2r3=0;
this.X3v=300;
this.T5$=300;
this.F50=i9h0.mQF3U;
this.xh53v=xh53v;
this.AUF5_=AUF5_;
this.mJ18=yQ2g;
this.left=$3n5;
this.top=UdL;
this.width=rF24;
this.height=n65D;
this.Dfk5V=Dfk5V;
this.i001=new Array();
this.p5TU="std";
this.t$D3="png";
this.$mR5=hp9h;
this.wW1=true;
this.u41=false;
this.v2a2=true;
this.Q1E=true;
this.pt76L=null;
this.lC8O6=true;
this.xDx=false;
this._t4=Math.ceil((this.width)/(this.X3v)/2);
this.XKO=Math.ceil((this.height)/(this.T5$)/2);
this.v8I=new Array();
this.sCXJ=new Array();
this.FK2=new Array();
this.A3Y7r=null;
this.i001=new Array();
this.e3953=new Array();
this.i4or=null;
this.xW7_=null;
this.Y7v6=null;
this.d27=null;
this.af5=null;


这么多属性自己看吧。也许组合计算下就可以了。呵呵。
不过我真的不懂他们的JS,也没有细看过。有懂的站出来说句话那。呵。
唉,研究到现在还是那句,没劲。
  回复  引用  查看    

#9楼  2006-06-10 14:17 fly_in+sky [未注册用户]
@浪人|努力
你说他们会不会有可视化的工具来做JS,你看变量名叫的都那么BT。哎。看着就头痛。调来调去,安全性真是直线上升。哎。我现在就想实现一个功能就是,我双击,然后加点。哎,找了两天才找到,双击事件在哪里触发的。真是头痛,
  回复  引用    

#10楼 [楼主] 2006-06-10 23:15 浪人|努力      
@fly_in+sky
已经很不错了。
双击应该是一个Mousedbclick的事件。改动代码你也可以实现加点。
至于变量名,当然是他们后来改的,只是我还没有找到这个工具而已。先前的JS代码是写的非常规整的,读来肯定很顺畅。只是后来变量名改了,去掉了所有的换行。呵呵,一般人都肯定会这么做的,保密上还行,没有加密成不可识别的代码已经很客气了。。。
  回复  引用  查看    

@浪人|努力
我现在知道他的解密代码,知道他的双击事件,并且双击时可以取屏幕的坐标。
现在知道如何加点,唯一一个问题就是,已知屏幕坐标转换成,经纬度坐标也就是他的坐标标准的方法。敬请次教。谢谢,麻烦你了。想的太头痛。
  回复  引用    

@浪人|努力
例如串“HJITTSZWDGWII”
通过 var tmp = b.p(latlon); 进行转换,成为一个数组返回,
tmp[1]=39.943
tmp[0]=119.595

-----------------------------------------------------------

地图容器的
宽=678 (maplet.width)
高=448 (maplet.height)
top=1 (maplet.top)
left=1 (maplet.left)

假如双击时产生的的鼠标对应的屏幕坐标,如何算出这点对应的他的标准的坐标呢。
event.clientX=463
event.clienty=299
辛苦你了。
  回复  引用    

@浪人|努力
http://club.mapbar.com/wiki2_0/edit.jsp?gid=555
这是我申请的一个,个人电子图吧,
呵呵,这里面有个编辑的公能,用户名:33427767密码000zhangyu
哎,可能是小弟比较笨,一直没能进入他的编辑功能的源代码。哎,那里面有个加点的功能哎。
  回复  引用    

@浪人|努力
老板活急,哎,好几个活都没做好了,怕被辞退,哎,辛苦你了。我这方面的经验比较少,以前也没怎么研究,都得现弄,哎。
  回复  引用    

#15楼 [楼主] 2006-06-11 12:41 浪人|努力      
@fly_in+sky
呵呵,我觉得这样就更不能说了,对MAPBAR来讲是多么不公平那,而且重要的是你们是用于商业目的的。
如果大家只是出于爱好,研究下,无妨,但用于商业,不好。至少我还暂时还没有考虑这样的问题。
对于Mapbar的研究已经断了很久了,一直没有看到有谁共享出一点点的研究的东西出来,所以我想我以后研究的也会更少。

不过还是给你一点思路吧。地图初始化的时候肯定有一个参考点的。容器的属性也是有坐标信息的,那么坐标信息和屏幕坐标计算下就是结果坐标。
  回复  引用  查看    

#16楼  2006-06-11 14:37 y_in+sky [未注册用户]
@浪人|努力
明白了。谢谢。
  回复  引用    

#17楼  2006-06-11 14:42 y_in+sky [未注册用户]
多少人和我一样,只为了一口饭活着。。。。。。。
  回复  引用    

@浪人|努力

还是得谢谢你
  回复  引用    

#19楼  2006-06-12 15:22 maxmore [未注册用户]
搞明白了,代码附上:
var abc=M9797-this.left;
var def=ea93-this.top;
var abc1=this.CW1;
var def1=this.qJgT;

这样调用加点函数就可以加点了。
  回复  引用    

#20楼 [楼主] 2006-06-12 20:02 浪人|努力      
@y_in+sky
原则要比其他更重要。

@maxmore
做的不错,不过我也没有看懂。
  回复  引用  查看    

#21楼  2006-06-13 18:46 maxmore [未注册用户]
@浪人|努力
不会吧。^_^!
  回复  引用    

你们太坏了---分析我们的编码后的JS。不过没关系,看就看吧。反正那个JS写的也不好,我们要换新的了。
  回复  引用    

#23楼 [楼主] 2006-06-15 20:22 浪人|努力      
@dean@mapbar
觉得分析不为过,毕竟也有那么多人分析GOOGLE,而且分析你们的JS,说明你们的JS做的不错,值得人家借鉴,如果没有人看你们的东西说明你们的东西很烂。事情总有两面性,要能够想开点。不过如果用于商业目的,那么是过了。呵呵,对于你们新的JS,拭目以待,希望能够更精彩。
  回复  引用  查看    

开源万岁!
  回复  引用    

@浪人|努力
其实新的已经上线了。在某地图合作网站开始试用。
  回复  引用    

#26楼  2006-06-26 14:17 bb@js [未注册用户]
搞了俩天还是不懂得怎么添加自定义标注和返回标注的坐标值啊!!!!!郁闷S了!!
有哪位达人把代码贴出来供小弟参考研究一下啊???
  回复  引用    

#27楼  2006-06-26 14:27 bb@js [未注册用户]
我指的是响应鼠标单击添加的自定义标注,望哪位达人给予解答一下,小弟不胜感激~
  回复  引用    

#28楼  2006-10-04 14:18 温州 [未注册用户]
我还是没有看懂,想问一下
http://www.map666.com/show.jsp?pid=1000079837
要生成这样的地图代码要如何做
谢谢~
  回复  引用    

#29楼  2007-03-27 15:27 懒懒 [未注册用户]
欢迎入群学习mapbar
qq群:25959894
  回复  引用    

#30楼  2008-03-05 14:33 import [未注册用户]
我的偏差很大,一个上海的经纬度偏到大西洋去了
  回复  引用    





标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

相关文章:

相关链接: