Google maps 隐藏Google Maps v3地图,需要时显示
有没有办法阻止谷歌地图(JS,v3)从一开始就显示出来?我正在进行一些预处理,并希望显示我的“加载”微调器,直到一切正常为止(更合理地说,隐藏地图——例如容器Google maps 隐藏Google Maps v3地图,需要时显示,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,有没有办法阻止谷歌地图(JS,v3)从一开始就显示出来?我正在进行一些预处理,并希望显示我的“加载”微调器,直到一切正常为止(更合理地说,隐藏地图——例如容器div——直到所有预处理完成——此时,显示地图) 连接地图的idle事件没有多大帮助,因为当该事件发生时,地图已经显示 我知道容器div在加载后会被GMaps内联样式化,我的第一个想法是清除style属性(同时收听idle事件),但如果有一种方法可以创建地图,并且在所有预处理完成之前不显示它,那将是一件有趣的事情 可能通过使用新的googl
div
——直到所有预处理完成——此时,显示地图)
连接地图的idle
事件没有多大帮助,因为当该事件发生时,地图已经显示
我知道容器div
在加载后会被GMaps内联样式化,我的第一个想法是清除style
属性(同时收听idle
事件),但如果有一种方法可以创建地图,并且在所有预处理完成之前不显示它,那将是一件有趣的事情
可能通过使用新的google.maps.Map
构造函数的参数,或者使用映射选项
有什么想法吗
提前谢谢你 还记得打电话给:
google.maps.event.trigger(map, 'resize');
如果您更改了
的大小。显示:无
没有大小。更好的方法:
gmap.redraw = function() {
gmOnLoad = true;
if(gmOnLoad) {
google.maps.event.trigger(gmap, "resize");
gmap.setCenter(gmlatlng);
gmOnLoad = false;
}
}
在show click事件中:
$("#goo").click(function() {
if ($("#map_canvas").css("display") == "none") {
$("#YMapsID").toggle();
$("#map_canvas").toggle();
if (gmap != undefined) {
gmap.redraw();
}
}
});
根据您正在做的事情,另一个可能性可能是在每个进程完成时将多个bool设置为true
例如:
如果您有一个要等待的地理代码服务正在运行,那么可以调用一个var
地质状态
在地理编码器的结果部分,将GeoState设置为true,
然后使用定时函数检查是否所有服务都返回true,当它们返回true时,使地图可见。这对我很有用。我正在使用JQuery库
$(document).ready(function(){
$('#Checkbox').click(function(){
$('#googleMapDiv').toggle();
initialize(); // initialize the map
});
});
或者你可以用css可视性或css不透明度来隐藏它
$("#GoogleMap").css({ opacity: 0, zoom: 0 });
initialize();
google.maps.event.addListener(map,"idle", function(){
$('#Loader').hide();
$("#GoogleMap").css({ opacity: 1, zoom: 1 });
});
这对我来说很好,我使用jquery选项卡
setTimeout(function() {
google.maps.event.trigger(map, "resize");
map.setCenter(new google.maps.LatLng(default_lat, default_lng));
map.setZoom(default_map_zoom);
}, 2000);
通过此链接,这将起作用
google.maps.event.addListener(map, "idle", function ()
{
google.maps.event.trigger(map, 'resize');
});
当贴图第一次渲染
时,显示隐藏贴图的另一种方法是设置样式:可见性
首次隐藏时,使用可见性=隐藏
;要显示,请使用visibility=visible
原因是:我使用了$(“#map_canvas”).attr(“样式”、“位置:相对;可见性:隐藏”)技巧,有效。正如Dr1Ku所说。将贴图渲染为不可见的div,然后在第一个空闲事件中显示该div。一定要使用addListenerOnce。我认为这个临时解决方案总比什么都没有好。这对我来说只是部分解决方案。我还必须调用map.fitbunds(bounds)
where bounds是正确的LatLngBounds对象。除了matt所说的之外,您还可以使用panTo(location)
重新居中地图。@dtanders这是一个多么棒的添加!嘿,加布里埃尔。感谢您提供这一令人惊讶的简单有效的解决方案。工作起来很有魅力!请注意,这可能会每次重新加载地图,而使用maps API v3,每天加载地图元素的次数有一个限制。不透明度:0成功了,我试图显示:无,但效果不好