K_Reverter的网页开发记录

要么不做,要么就当作艺术品来做!

导航

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;

posted on 2006-05-11 19:45  K_Reverter  阅读(860)  评论(0编辑  收藏  举报