Google Maps API V3 - 自定义图块

Posted

技术标签:

【中文标题】Google Maps API V3 - 自定义图块【英文标题】:Google Maps API V3 - Custom Tiles 【发布时间】:2011-06-03 13:17:33 【问题描述】:

我目前正在通过here 开发 Google Maps API V3

如果您在 21 到 23 之间缩放,地图上会出现图像叠加。图像加载时间太长,我决定将其分成不同的图块以便于加载。我正在使用自动瓷砖切割机将图像切割成瓷砖。

我的脚本有问题;

    var OrgX = 31551;   // the Google Maps X value of the tile at the top left corner of your Photoshop document 
    var OrgY = 50899;   // the Google Maps Y value of the tile at the top left corner of your Photoshop document

第一个问题如何从 photoshop 文档中找到 X 和 Y 的值?

如果我能解决第一个问题。

第二个问题下面的代码是否可以根据缩放级别正确显示图块?还是我遗漏了任何代码?

var BuildingsLayer = new google.maps.ImageMapType(
    getTileUrl: function(coord, zoom) 
        return "http://search.missouristate.edu/map/tilesets/baselayer/" + zoom + "_" + coord.x + "_" + coord.y + ".png";
    ,
    tileSize: new google.maps.Size(256, 256),
    isPng: true
);

map.overlayMapTypes.push(BuildingsLayer);

【问题讨论】:

【参考方案1】:

我没有使用自动瓷砖切割机,而是使用并推荐了 MapTiler。 它不仅将图像切成小块,而且还生成了一个 javascript 小块脚本来使用它。

但是,该脚本是用 v2 编写的。您可以根据以下内容编辑代码:

v3 瓦片脚本

var maptiler = new google.maps.ImageMapType( 
  getTileUrl: function(coord, zoom)  
return zoom + "/" + coord.x + "/" + (Math.pow(2,zoom)-coord.y-1) + ".png"; 
, 
  tileSize: new google.maps.Size(256, 256), 
  isPng: true 
); 

var map; 

function initialize()  
 map = new google.maps.Map(document.getElementById("map_canvas")); 
 map.setCenter(new google.maps.LatLng(36.07, -112.19)); 
 map.setZoom(11); 
 map.setMapTypeId('satellite'); 
 map.overlayMapTypes.insertAt(0, maptiler); 

Credits

【讨论】:

最新版本的 MapTiler 可从:maptiler.com 自动支持 Google Maps V3。不再需要更改 JavaScript 代码。 maptiler 在每个图像中都添加了“maptiler”,非常烦人,并且毁了我的图像。建议你下载命令行工具GDAL代替。

以上是关于Google Maps API V3 - 自定义图块的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在Google Maps API v3上编写自定义文字?

是否可以在 Google Maps API v3 上编写自定义文本?

Google Maps API v3:在Firefox中未触发自定义标记的点击事件

如何自定义附近地点搜索返回的结果,Google Maps JS API V3

如何在 Google Maps V3 中创建编号的地图标记?

使用 Google Maps API v3 禁用兴趣点信息窗口