关于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>来切换.

你可能感兴趣的:(android,map,Google)