如果觉得 GTileLayerOverlay 太受限制,则您可以定义自己的自定义地图类型,并开发全新的显示样式。要执行此操作,请构造一个 GMapType 对象,并使用 GMap2.addMapType() 方法将其添加到地图。

从头构造地图类型是一个复杂的过程。您需要构建一种方式,在提供当前图标的情况下,定义和检索在地图上显示的动态数据,并需要确定怎样引用和显示图块。您怎么做由您自己决定,但我们可以通过说明 Google 地图怎样实现其图块引用来向您提供一些帮助。
Google 地图坐标
Google 地图 API 使用三种坐标系:

    * 像素坐标,引用图块上的一个点
    * 图块坐标,引用图块层中的一个图块
    * 缩放层,定义总的图块数

下面对其中每个系统进行讨论。
像素坐标

Google 地图中的每个图块都包含 256 x 256 个像素。可以使用 GPoint(x,y) 对来引用特定图块上的某个点。每个图块的原点 (0,0) 表示为图块的西北角。因此,对于表示整个地球的单个图块,原点设置为在北极,经度 -180 度,您可以在该位置看到阿拉斯加。x(经度)值越往东越大,而 y(纬度)值越往南越大,一直到东南角 (255,255)。 

在高一级的缩放级别,像素空间在 x 和 y 方向都扩大一倍。例如,在缩放级别 1,地图包括 4 个 256x256 像素的图块,产生 512x512 的像素空间。在缩放级别 19,地图上的每个 x 和 y 像素均可以使用 0 和·256 * 219 之间的值来引用。

图块坐标

引用整个地图上这样一个唯一的点通常是不实际的。在较高的缩放级别,Google 地图 API 不能使用一个图像文件显示整个地球。因此确定正在使用哪个图块,然后相对于该图块的原点计算像素坐标非常有用。您实现的任何自定义地图都需要进行相同的计算。

Google 地图中的图块从与像素相同的原点开始计算,以便使原点图块始终处于地图的西北角。图块使用从该原点算起的 x,y 坐标进行索引。例如,在缩放级别 2,当地球分为 16 个图块时,每个图块可以通过一个唯一的 x,y 对来引用:

(0, 1), (0, 2), (0, 3)

(1, 1), (1, 2), (1, 3)

(3, 1), (3, 2), (3, 3)  

因此索引特殊缩放级别的特殊点可以使用两个 GPoint 值:一个引用正在使用的图块,一个引用图块 256 x 256 像素图像中的坐标。

如果不是少许简单缩放级别,则实现图块叠加层是一个麻烦的任务,因为您需要添加逻辑来确定处理哪个特定的图块。Google 地图·API 可让您构建一个 GTileLayer,将 GTileLayerOptions 参数作为对象常量传递。GTileLayerOptions 参数包含 tileUrlTemplate 属性,可根据图块坐标将图块请求映射到网址。叠加层的构造函数可能如下所示:

var tileLayerOverlay = new GTileLayerOverlay(
  new GTileLayer(null, null, null, {
    tileUrlTemplate: 'http://domain.com/myimage_{Z}_{X}_{Y}.png',
    isPng:true,
    opacity:1.0
  })
);

map.addOverlay(tlo);

此模板方案可让您像处理 Google 地图一样处理使用图块坐标命名的一组图块。