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);
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 阅读(1787) 评论(0) 编辑 收藏 举报