关于Google Maps的地图类型(MapType)的一些心得

        在Google Maps之中地图类型(MapType)是一个比较复杂的类,可是在Google Maps API说明之中却没有比较明确的说明,我将我对API分析之后的一些心得写出来,供大家参考。

        每一个地图类型首先是一个类(class),比如地图类型的类名称是_GoogleMapMercSpec,而卫星图类型的类名称是_KeyholeMapMercSpec,这些类通过不同的方式实现了一些必需的方法和属性,然后就可以当作MapType添加到地图之中,其中比较重要的有:

tileSize属性每一小块图片的大小
numZoomLevels属性有多少个缩放级别
getLinkText方法返回该地图类型的显示名称
getShortLinkText方法返回该地图类型的简短显示名称
hasOverlay方法该地图类型是否附有标注图片
getBitmapCoordinate方法根据经纬度和缩放级别,返回该地理点在整幅图片上的坐标
getPixelsPerDegree方法返回在某缩放级别下每一个地理经度范围对应的图片像素大小
getTileURL方法这个最重要,根据小块图片编号获得图片的路径
getOverlayURL方法在附有标注图片的情况下,根据小块图片编号或的标注图片的路径
initMercator方法初始化
getLatLng方法将图片坐标转化为经纬度


        改写这些方法和属性,就可以实现自定义的地图类型,比如我见到国外有一个高手写了一个让Google Maps API能调用WMS Servers的地图类型,具体情况请前往该Blog:Google Maps API and WMS Servers.

        我也写过一个让Google Maps API能调用灵图MOSP 栅格地图发布服务的地图类型,具体可以参看K_MOSPSpec使用说明.

        怎么使用这些地图类型呢?这个问题在Goolge Maps API说明之中也没有明确的说明,其实当前加载的地图类型都在数组map.mapTypes(map是地图)之中,只要生成一个新mapType的实例,添加到map.mapTypes里面即可,比如:

map.mapTypes.push(new K_MOSPSpec(map,"/51ditu/GMPubSrv.asmx?", "中国地图","51445144","51445144","image/jpeg"));

        同样,要删除该地图类型,只要将相应项从该数组之中删除即可。

        地图加载的时候Google已经将集成的几种地图添加到了对象之中,变量名称分别为_GOOGLE_MAP_TYPE,_SATELLITE_TYPE,_KATRINA_TYPE,_HYBRID_TYPE,因此,可以使用<b>map.setMapType(_SATELLITE_TYPE)</b>来切换地图类型,也可以用<b>map.setMapType(map.mapTypes[1]);</b>来切换.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值