开发手记

编程

  博客园 :: 首页 :: 新随笔 ::  ::  :: 管理 ::
  18 随笔 :: 2 文章 :: 39 评论 :: 3 引用

2006年4月27日 #


posted @ 2006-04-27 22:30 Calendar 阅读(177) 评论(0) 编辑

google maps里最重要的对象应该算是GMapsApplication了,它的定义用到了javascript面向对象设计方法。

var a=z.prototype;
W("GMapsApplication",z);
P(z,"getMap",a.N);

function W(a,b){window[a]=b}
function P(a,b,c){a.prototype[b]=c}
z.prototype.N=function(){return this.a}

W函数把对象放在window属性里,可以为一个对象定义一个名称;
P函数则通过ptototype给对象增加方法别名。

有了这些,就可以用
var a = new GMapsApplication(e("map"));
像实例化一个javascript内置对象一样来实例化GMapsApplication了。
用起来还真方便。感觉把c#编程和脚本编程给拉近了一大截。
自己也写了个测试用例:

<script>
window[
"Hello"= aa;
function aa()
{
    
this.x = 5;
    
this.y = 6;
    
this.test = function(a)
    
{
        alert(a 
+ "," + this.x + "," + this.y);
    }

}


var xx = new Hello();
xx.test(
"bb");
</script>
posted @ 2006-04-27 21:15 Calendar 阅读(753) 评论(1) 编辑

通过url跟踪,可以方便地取得google maps普通地图的图片url,如:
GET /mt?n=404&v=w2.10&x=3&y=6&zoom=13 HTTP/1.1
而对卫星地图图片的url像:
GET /kh?n=404&v=5&t=tqtsq HTTP/1.1
就不知它的t参数含义了。
今天看了看地图的.js文件,找到了如下代码,可以计算这个参数,也就可以动态构造出相应的url去批量下载卫星地图了。
代码如下:

<script>

function MapObj()
{
    
this.x;
    
this.y;
}


function test()
{
    
var o = new MapObj();
    
var ss = document.all("txtPos").value.split(",");
    o.x 
= ss[0];
    o.y 
= ss[1];
    
var zoom = parseInt(document.all("txtFactor").value);
    
var ret = cal(o, 17 - zoom);
    document.all(
"txtMess").value = ret;
}

function cal(a,b)
{
    
var c=Math.pow(2,b);//比例参数, 地图宽度图片数量
    var d=a.x;//a is the map object
    var e=a.y;
    
var f="t";
    
/*
    zoom = 13; b = 4; c = 2^4 = 16;
    
*/

    
for(var g=0;g<b;g++)//
    {
        c
=c/2;        // c / 2
        if(e<c)        //a.y < c
        {
            
if(d<c)//a.x < c
            {
                f
+="q"
            }

            
else//a.x >= c
            {
                f
+="r";
                d
-=//a.x = a.x - c
            }

        }

        
else//a.y >= c
        {
            
if(d<c)//a.x < c
            {
                f
+="t";
                e
-=//a.y = a.y - c
            }

            
else//a.x >= c
            {
                f
+="s";
                d
-=c;  //a.x = a.x - c
                e-=c   //a.y = a.y - c
            }

        }

    }

    
return "t=" + f;
    
//var h=(a.x+a.y)%this.wa.length;//
    //return this.wa[h]+"t="+f
}

</script>
(x,y)
<input type=text id="txtPos" value="3,7"><br>
zoom:
<input type=text id="txtFactor" value="13">
<input type=button value="check" onclick="test()">

<br>
   
<input type=text id="txtMess">

posted @ 2006-04-27 20:47 Calendar 阅读(2223) 评论(5) 编辑

把eclipse,jdk的安装包拷到/opt目录下,
先运行./j2sdk.bin安装jdk,
再运行tar zxvf eclipse*.tar.gz把eclipse解压到当前目录.

再建立一个run.sh文件,

export JAVA_HOME=/opt/j2sdk1.4.2_06
export CLASSPATH=/opt/j2sdk1.4.2_06/lib
/opt/eclipse/eclipse -vm /opt/j2sdk1.4.2_06/bin/java &


给run.sh加上执行权限: chmod +x run.sh

这样就可以双击run.sh就运行eclipse了.

运行swt程序时,有时会遇到mozilla的错误问题,可以在run.sh里再加上一句:
export MOZILLA_FIVE_HOME=/usr/lib/mozilla

如果还有问题,则要把swt的linux的jar包解压出来,然后在运行的环境变量里加上:
java.library.path=/opt/eclipse/plugins/swt


如果界面嵌入浏览器时,经常会出错,这应该是eclipse本身的问题.

posted @ 2006-04-27 20:25 Calendar 阅读(737) 评论(0) 编辑