K_Reverter的网页开发记录

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

导航

Google Maps API 2.0解析(1-API加载)

 

var GMsg_Implement="Required interface method not implemented";//不支持该接口的提示
  var GPath_mStatic=window._mStaticPath;//静态图片路径
  var GPath_transImg=GPath_mStatic+"transparent.png";//透明图片地址
  var E=Math.PI;//PI的值
  var GMath_MaxValue=Number.MAX_VALUE;//最大数字
  var G_DEFAULT_MAP_TYPES;//默认地图类型数组
  var tc;是否显示了Logo,该变量的值同时也会在获取地图版权信息时被发送到Google的服务器
  
//API加载函数,三个参数分别为
  // a 地图模式的服务器列表
  // b 卫星图的服务器列表
  // c 混合图的服务器列表
  function GLoadApi(a,b,c,d)//在页面加载的时候运行
  {
   tc
=d;
   CreateImage(GPath_transImg,
null);//创建一个图片
   createMapSpecs(a,b,c);//生成各个地图类型
  }
  
function GUnloadApi()//在页面卸载的时候运行
  {
   RemoveAllEvents()
//取消所有事件注册,这样防止页面刷新之后的内存溢出的问题
  }
  
//地图类型初始化函数,三个参数分别为
  // a 地图模式的服务器列表
  // b 卫星图的服务器列表
  // c 混合图的服务器列表
  function createMapSpecs(a,b,c)
  {
   
var d=new GCopyrightCollection(_mMapCopy);//地图类型版权信息
   var e=new GCopyrightCollection(_mSatelliteCopy);//卫星图类型版权信息
   //这个方法在用户拖动地图的时候动态由服务器端的代码来调用执行,例如:
   //网址:http://maps.google.com/maps?spn=0.041179,0.069008&z=13&key=&vp=37.408755,-121.836662&ev=p
   //内容:GAddCopyright("m","0",22.0310,-125.2410,49.0930,-62.7100,3,"NAVTEQ?");
   //参数分别为:
   // 地图类型? id minX minY maxX maxY minZoom,text
   var GAddCopyright=function(M,ta,bb,cb,yb,Sb,ic,db)
   {
    
var Ta=M=="m"?d:e;//是否地图模式
    var jc=new GLatLngBounds(new GLatLng(bb,cb),new GLatLng(yb,Sb));//显示位置
    //CopyRight构造函数参数分别为:id,minZoom,bounds,text
    Ta.addCopyright(new CopyRight(ta,jc,ic,db))
   };
   setWindows(
"GAddCopyright",GAddCopyright);
   G_DEFAULT_MAP_TYPES
=[];
   setWindows(
"G_DEFAULT_MAP_TYPES",G_DEFAULT_MAP_TYPES);
   
//新建一个墨卡托投影坐标系统对象,在Google Maps之中,可以通过继承GProjection定义坐标系统,GMercatorProjection就是这样一种坐标系统对象
   //唯一的一个参数是缩放等级数
   var g=new GMercatorProjection(GetMax(17,19)+1);
   
if(a.length>0)
   {
    
var h={shortName:_mMapModeShort,urlArg:"m",errorMessage:_mMapError};
    
//建立新的地图类型的对象_GoogleMapMercSpec,该对象继承GTileLayer实现,代表一种地图类型
    var i=new _GoogleMapMercSpec(a,d,17);
    
var l=[i];
    
//建立一种新的地图类型,参数分别为:
    // 地图层GTileLayer数组,使用的坐标系统,名称,配置类
    var G_NORMAL_MAP=new GMapType(l,g,_mMapMode,h);
    G_DEFAULT_MAP_TYPES.push(G_NORMAL_MAP);
    setWindows(
"G_NORMAL_MAP",G_NORMAL_MAP);
    setWindows(
"G_MAP_TYPE",G_NORMAL_MAP)
   }
   
if(b.length>0)
   {
    
var p={shortName:_mSatelliteModeShort,urlArg:"k",textColor:"white",linkColor:"white",errorMessage:_mSatelliteError};
    
//建立新的地图类型的对象_KeyholeMapMercSpec,该对象继承GTileLayer实现,代表一种地图类型
    var t=new _KeyholeMapMercSpec(b,e,19,_mSatelliteToken,_mDomain);
    
var v=[t];
    
//建立一种新的地图类型,参数分别为:
    // 地图层GTileLayer数组,使用的坐标系统,名称,配置类
    var G_SATELLITE_MAP=new GMapType(v,g,_mSatelliteMode,p);
    G_DEFAULT_MAP_TYPES.push(G_SATELLITE_MAP);
    setWindows(
"G_SATELLITE_MAP",G_SATELLITE_MAP);
    setWindows(
"G_SATELLITE_TYPE",G_SATELLITE_MAP)
   }
   
if(b.length>0&&c.length>0)
   {
    
var y={shortName:_mHybridModeShort,urlArg:"h",textColor:"white",linkColor:"white",errorMessage:_mSatelliteError};
    
var B=new _GoogleMapMercSpec(c,d,17,true);
    
var F=[t,B];
    
var G_HYBRID_MAP=new GMapType(F,g,_mHybridMode,y);
    G_DEFAULT_MAP_TYPES.push(G_HYBRID_MAP);
    setWindows(
"G_HYBRID_MAP",G_HYBRID_MAP);
    setWindows(
"G_HYBRID_TYPE",G_HYBRID_MAP)
   }
  }
  
//对象b注册到全局windows的a变量
  function setWindows(a,b)
  {
   window[a]
=b
  }
  
//将a的b原型设置为c
  function setPrototype(a,b,c)
  {
   a.prototype[b]
=c
  }
  
//设置属性
  function SetProperty(a,b,c)
  {
   a[b]
=c
  }
  setWindows(
"GLoadApi",GLoadApi);
  setWindows(
"GUnloadApi",GUnloadApi);

    请注意以上代码之中的tc变量,改变量在API代码之中是全局的,实际上,该代码指定了是否显示Google的Logo图(左下角的图标),因此,在所引用的配置文件之中将GLoadApi的最后一个参数设置成false即可,不过,Google地图的下方的文字版权标示是采用JS文件引用(一种另类的AJAX)模式向服务器实时获取的,向服务器发送的请求的时候包含有tc变量的值,因此,要小心使用,不一定如果tc设置成false,可是API就不能用了。

posted on 2006-04-28 00:00  K_Reverter  阅读(1783)  评论(0编辑  收藏  举报