奇怪的問題,我想,但我有這段代碼在我的網頁...放慢我的JavaScript!如何讓我的代碼在執行之前等待轉換完成?
$(".map-overlay-left").click(function() {
$("#map-holder").hide('slow');
var gmarkers = [];
var side_bar_html = "";
var map = new GMap2(document.getElementById('map-holder'));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
var Africa = new GLatLng(-2.767478,23.730469);
map.setCenter(Africa, 4);
$.get("http://xx.xxx.xxxx.xxx/xml-feed-google-maps",{},function(xml) {
$('marker',xml).each(function(i) {
html = $(this).text();
lat = $(this).attr("lat");
lng = $(this).attr("lng");
label = $(this).attr("label");
var point = new GLatLng(lat,lng);
var marker = createMarker(point,label,html);
map.addOverlay(marker);
});
});
$("#map-holder").show('slow');
});
這工作fantasticly和做什麼,我想在功能上只是不UI明智的。這意味着首先做一個很好的轉換來隱藏div「map-holder」,渲染谷歌地圖,然後做一個很好的轉換。過渡是默認的JQuery顯示/隱藏。
現在我似乎得到的問題是,當這個$("#map-holder").hide('slow');
仍在運行時,你正在呈現Google地圖,並且你在地圖隱藏之前看到地圖的一瞥,然後再次打開,這反映了整個效果。
因此,任何人都有任何想法,我可以放慢代碼,等待隱藏功能完成之前完成其餘的? (理想情況下,我不想使用類似setTimeout的硬編碼)。
在此先感謝!
沙迪
更新1
我將回電話就躲功能,但它在GMAP一個很奇怪的效果。在Chrome/FF/Safari中,它只會在地圖的角落呈現一小段。而在IE中它完全被拋棄並且位於不同的位置。 GMap似乎不喜歡被隱藏在div中。
你可以在這裏看到它http://afid.staging.dante-studios.com/它在前面(只需點擊亞洲或非洲的播放按鈕即可看到奇怪的效果)。
有關如何解決此問題的任何想法?
更新2 試圖修復無法正常在一個隱藏的div使用該渲染的谷歌地圖的問題:
$(".map-overlay-left").click(function() {
$("#map-holder").hide('slow', function(){
var gmarkers = [];
var side_bar_html = "";
var map = new GMap2(document.getElementById('map-holder'));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
var Africa = new GLatLng(-2.767478,23.730469);
map.setCenter(Africa, 4);
$.get("http://afid.staging.dante-studios.com/xml-feed-google-maps",{},function(xml) {
$('marker',xml).each(function(i) {
html = $(this).text();
lat = $(this).attr("lat");
lng = $(this).attr("lng");
label = $(this).attr("label");
var point = new GLatLng(lat,lng);
var marker = createMarker(point,label,html);
map.addOverlay(marker);
});
});
});
$("#map-holder").show('slow');
map.checkResize();
map.setCenter(Africa, 4);
});
但可惜沒有運氣與map.checkResize();
方法。有任何想法嗎?
我已更新有關回調修復程序所創建問題的問題......任何想法? :) – 2009-12-14 23:44:52
shadi:嘗試將'var map = new GMap2(document.getElementById('map-holder'))'移動到'hide()'的調用之前。這是做什麼的? – 2009-12-14 23:47:36
@Roatin:完美的固定它,我猜想在gmap瞭解容器之前,讓它理解容器!- 謝謝你的幫助。 – 2009-12-14 23:51:27