Google Maps API 2.0解析(7-GTicks和地图图片相关的函数)
//看了这个代码,开始好长时间都没有想出那是用来干什么的,可是等我慢慢的领会它的意图之后,不由得再次为Google的
奇思妙想而惊叹
//这个代码实际上是用来进行一个渐变效果优化的,比如在双击地图的时候,地图要移动到双击的点,其实并不是匀速的移
动过去,
//而是先加速,再减速,造成一种比较完美的滑动效果,这个效果我一直没有注意到,不过我相信一定有人注意到了,
//Google能将用户体验做到如此细微,的确让我觉得望尘莫及
//参数代表刻度的总个数
function GTicks(a)
{
this.ticks=a;
this.tick=0
}
//重置,下次依然从第一个开始返回
GTicks.prototype.reset=function()
{
this.tick=0
};
//返回下一个刻度
GTicks.prototype.next=function()
{
this.tick++;
var a=Math.PI*(this.tick/this.ticks-0.5);
return(Math.sin(a)+1)/2
};
//判断是否到了刻毒的末尾
GTicks.prototype.more=function()
{
return this.tick<this.ticks
};
//创建一个图片,参数分别为:
// a 图片路径
// b 图片的父层,可选
// c 图片位置,可选
// d 图片大小,可选
// e 设置是否在IE之中使用DIV模式,墨认为不使用
function CreateImage(a,b,c,d,e)
{
var f;
if(e&&browser.type==1)
{
f=CreateElement("div",b,c,d);
var g=CreateElement("img",f);
g.style.visibility="hidden";
addDomListener(g,GEvent_load,setAlphaImage)
}
else
{
f=CreateElement("img",b,c,d)
}
SetUnSelectable(f);
if(browser.type==1)
{
f.galleryImg="no"
}
f.style.border=GetPixelValue(0);
f.style.padding=GetPixelValue(0);
f.style.margin=GetPixelValue(0);
f.oncontextmenu=PreventEventDefault;
setImgSrc(f,a);
return f
}
//以下方法用来创建一个图标的显示层,支持在一个大图片上取一部分作为图标,在GScaleControl之中使用到
// a 图标的路径
// b 图标的父层
// c 图标在图片上相对于图片的位置
// d 图标的大小GSize
// e 图标的位置GPoint
function CreateIconDiv(a,b,c,d,e)
{
var f=CreateElement("div",b,e,d);
f.style.overflow="hidden";
var g=new GPoint(-c.x,-c.y);
CreateImage(a,f,g,null,true);
return f
}
//PNG图片在IE浏览器里面默认是不支持半透明的,所以很多图片Google都用一个DIV来包装起来,并用一下方法加载一个虑
镜来实现半透明
//该方法在图片下载完成后执行
function setAlphaImage()
{
var a=this.parentNode;
var b=this.src;
a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop,src=\""+b+"\")";
a.src=b
}
//设置图片路径
function setImgSrc(a,b)
{
if(a.tagName=="DIV")
{
a.firstChild.src=b
}
else
{
a.src=b
}
}
//在图片a加载出错的时候,以a为参数运行b函数
function setImageErrorHandle(a,b)
{
var c=a.tagName=="DIV"?a.firstChild:a;
addDomListener(c,GEvent_error,function(){b(a)})
}
//返回静态图片的路径,注意不是地图图片,a是图片的名称,b指定用gif还是png格式的图片
function getStaticImageUrl(a,b)
{
return GPath_mStatic+a+(b?".gif":".png")
}
//以下变量定义Marker之中使用的MAP标签的个数,用来给MAP标签命名
var markerMapIdFlag=0;
奇思妙想而惊叹
//这个代码实际上是用来进行一个渐变效果优化的,比如在双击地图的时候,地图要移动到双击的点,其实并不是匀速的移
动过去,
//而是先加速,再减速,造成一种比较完美的滑动效果,这个效果我一直没有注意到,不过我相信一定有人注意到了,
//Google能将用户体验做到如此细微,的确让我觉得望尘莫及
//参数代表刻度的总个数
function GTicks(a)
{
this.ticks=a;
this.tick=0
}
//重置,下次依然从第一个开始返回
GTicks.prototype.reset=function()
{
this.tick=0
};
//返回下一个刻度
GTicks.prototype.next=function()
{
this.tick++;
var a=Math.PI*(this.tick/this.ticks-0.5);
return(Math.sin(a)+1)/2
};
//判断是否到了刻毒的末尾
GTicks.prototype.more=function()
{
return this.tick<this.ticks
};
//创建一个图片,参数分别为:
// a 图片路径
// b 图片的父层,可选
// c 图片位置,可选
// d 图片大小,可选
// e 设置是否在IE之中使用DIV模式,墨认为不使用
function CreateImage(a,b,c,d,e)
{
var f;
if(e&&browser.type==1)
{
f=CreateElement("div",b,c,d);
var g=CreateElement("img",f);
g.style.visibility="hidden";
addDomListener(g,GEvent_load,setAlphaImage)
}
else
{
f=CreateElement("img",b,c,d)
}
SetUnSelectable(f);
if(browser.type==1)
{
f.galleryImg="no"
}
f.style.border=GetPixelValue(0);
f.style.padding=GetPixelValue(0);
f.style.margin=GetPixelValue(0);
f.oncontextmenu=PreventEventDefault;
setImgSrc(f,a);
return f
}
//以下方法用来创建一个图标的显示层,支持在一个大图片上取一部分作为图标,在GScaleControl之中使用到
// a 图标的路径
// b 图标的父层
// c 图标在图片上相对于图片的位置
// d 图标的大小GSize
// e 图标的位置GPoint
function CreateIconDiv(a,b,c,d,e)
{
var f=CreateElement("div",b,e,d);
f.style.overflow="hidden";
var g=new GPoint(-c.x,-c.y);
CreateImage(a,f,g,null,true);
return f
}
//PNG图片在IE浏览器里面默认是不支持半透明的,所以很多图片Google都用一个DIV来包装起来,并用一下方法加载一个虑
镜来实现半透明
//该方法在图片下载完成后执行
function setAlphaImage()
{
var a=this.parentNode;
var b=this.src;
a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop,src=\""+b+"\")";
a.src=b
}
//设置图片路径
function setImgSrc(a,b)
{
if(a.tagName=="DIV")
{
a.firstChild.src=b
}
else
{
a.src=b
}
}
//在图片a加载出错的时候,以a为参数运行b函数
function setImageErrorHandle(a,b)
{
var c=a.tagName=="DIV"?a.firstChild:a;
addDomListener(c,GEvent_error,function(){b(a)})
}
//返回静态图片的路径,注意不是地图图片,a是图片的名称,b指定用gif还是png格式的图片
function getStaticImageUrl(a,b)
{
return GPath_mStatic+a+(b?".gif":".png")
}
//以下变量定义Marker之中使用的MAP标签的个数,用来给MAP标签命名
var markerMapIdFlag=0;
posted on 2006-05-11 19:45 K_Reverter 阅读(860) 评论(0) 编辑 收藏 举报