jot*_*mon 5 javascript google-maps google-maps-api-3
我正在将 10 个 GroundOverlays 加载到 GoogleMap 上,并希望显示与加载图像相关的进度。
var imageBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(42.80059,-115.253806),
new google.maps.LatLng(47.481725,-110.227471));
var layer1 = new google.maps.GroundOverlay("overlays/layer1.png",imageBounds);
layer1.setOpacity(.5);
layer1.setMap(map);
Run Code Online (Sandbox Code Playgroud)
如何检测每个叠加层的实际图像何时加载或加载百分比?我想添加一个进度条或其他东西来向用户显示叠加层正在加载,因为它可能需要 5 秒左右的时间。
如果您有一张图像作为地面覆盖图,我会执行以下操作:
进展...这更多的是针对浏览器的。但加载很容易,所以:
function loadOverlay(){
var img = new Image();
var img_url = "overlays/layer1.png"
img.src= img_url;
$('#wait_for_overlay').show();
img.onLoad = function(){
$('#wait_for_overlay').hide();
var layer1 = new google.maps.GroundOverlay(img_url,imageBounds);
layer1.setOpacity(.5);
layer1.setMap(map);
}
};
Run Code Online (Sandbox Code Playgroud)
这有效的原因:
创建一个 img 对象并设置其“src”属性将使浏览器在 JavaScript 函数完成后立即开始下载所请求的文件。
浏览器会将这个图像放入本地缓存中,然后调用 onLoad 函数来查看它会发生什么。
回调实际上对 img 变量没有任何作用(也许它应该,确保它不会按照闭包规则被清除,如果有问题则对其执行 NOP),而是调用 google-maps 函数。
google-maps 函数将在完全相同的 url 请求图像,浏览器将在该 URL 查找其缓存表,并立即从缓存中取回图像。
这个技巧很恶心,但事实上,谷歌地图引擎将在后台执行完全相同的 onLoad 操作(因为这就是地图引擎的工作方式)。
我希望这能满足您的问题...没有进度条,只是一个加载指示器...也许您可以通过使用 XHR 请求并检查进度来实现进度条,我不确定,但技巧是相同的:虚假请求,以便使其到达缓存。