【发布时间】:2016-09-09 02:18:49
【问题描述】:
我正在开展一个项目,该项目将数字组织学(显微镜)幻灯片图像转换为按 Google 地图架构排列的 256x256 像素 JPEG 图块。由于这些组织设置在完全白色的背景 (see example here) 上,因此我使用的程序在将显微镜幻灯片文件转换为平铺 JPEG 时,它还会删除完全白色的瓷砖。这节省了大量的存储空间,并导致上传到服务器的文件更少,这很有帮助,因为我无法控制服务器(我正在使用 Google Storage)。
但是,这会在图像中留下空白。当该位置不存在图块时,我正在尝试让 Google 地图脚本加载单个全白 JPEG 图像。我在任何地方都找不到答案,而且我的编程技能充其量只是新手水平。我能找到的最接近的方法是使用tile overlays,,但我并不总是知道需要更换哪些瓷砖,而且这似乎是填充这些未填充区域的必要信息。
我目前的(非常非常基本的脚本)如下:
< html > < head >
< script type = "text/javascript"
src = "https://maps.googleapis.com/maps/api/js?sensor=true&v=3" > < /script>
<script type="text/javascript
">
function initialize()
{
geocoder = new google.maps.Geocoder();
var myOptions = {
zoom: 2,
center: new google.maps.LatLng(0,0),
mapTypeControl: false,
streetViewControl: false,
navigationControl: true,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("
map_canvas "), myOptions);
var VM_Map = new google.maps.ImageMapType({
name: 'Digital Histology'
alt: 'Digital Histology',
getTileUrl: function(coord, zoom) {return customGetTileURL(coord, zoom);},
tileSize: new google.maps.Size(256, 256),
minZoom: 1,
maxZoom: 9,
isPng: false
});
map.mapTypes.set('VM_Map', VM_Map);
map.setMapTypeId('VM_Map');
}
function customGetTileURL(a,b) {
return 'SERVER_PATH' + b + '/' + a.y + '/' + a.x + '.jpg'
}
</script>
</head>
<body id="
body " style="
margin: 0px;
padding: 0px;
overflow: hidden;
" onLoad="
initialize()
" >
<div id="
map_canvas " style="
width: 100 % ;
height: 100 % ;
"></div>
</body>
</html>
任何建议将不胜感激。
【问题讨论】:
-
通过ErrorDocument404简单定义一个默认平铺
-
我需要控制服务器才能做到这一点,是吗?我无法控制服务器(我正在向 Google 支付存储费用...我会将其添加到帖子中)。
-
当你想要一个白色的瓷砖缺失瓷砖时,只需为所有瓷砖定义一个白色背景。
-
哦。呃。这样就行了!非常感谢!您想将其添加为答案,以便我给予您信任吗?
-
这不适用于@Brandon 的问题,因为他最多只使用缩放 9,但是创建一个使用白色(或透明)瓷砖作为空瓷砖的瓷砖金字塔是一个可怕的 如果您的地图缩放在高缩放时覆盖大面积*并且您的要素是边界(例如,州边界;财产边界)。为什么?因为在缩放 > 15 时,空白图块占平均图块目录的约 95%,而缩放 > 15 则占所有图块的近 95%。每个空白切片文件为 360 字节,但由于 最小块大小,它在磁盘上占用 4KB。加载到边界限制;在客户端进行测试。
标签: javascript google-maps google-maps-api-3