2013-08-20 59 views
0

我正在使用谷歌地圖顯示當地的商店。我需要拇指地圖和大地圖的解決方案,但沒有加載谷歌地圖兩次

在設計中,在整個頁面右側有一個小地圖(200x200),點擊一個按鈕後,它會顯示一個更大的地圖(800x600)和完整的控件(使用lightbox效果)。

我不知道是否有任何解決方案,我不需要加載地圖兩次?由於兩個地圖的位置/點是相同的,只是大小不同。

目前我能想到的是使用html/php文件加載地圖,然後使用iframe在主頁面中加載該文件。但我能想象的問題是,它如何能夠集中在小圖和大圖(html容器)中?

回答

1

地圖是一個HTML元素,你可以放在其他地方它document內(無需重新加載元素的任何內容),例如在LightBox中。

當地圖插入到燈箱中時,可能會在燈箱打開並重新分配之前存儲中心。

演示(使用fancybox):http://jsfiddle.net/doktormolle/TECM4/

+0

非常感謝Dr.Molle。這是驚人的演示。儘管我可以閱讀大部分腳本,但仍有一些疑問,我希望你能提供幫助:beforeLoad:function(a){this.content.data({parent:this.content.parent(),//)這樣做嗎? center:map.getCenter() }) 此外,這個「this.content.appendTo(this.content.data('parent'))。show();」非常感謝您的時間 – jellday

+0

它將地圖的中心和地圖的父元素存儲在變量中。在我的回答中解釋了該中心的原因......以重新定位fancybox內的地圖。父母是多餘的,當我做演示時剩餘的(我認爲當fancybox已經關閉時地圖沒有回到原來的位置(因爲地圖消失),所以我用這個變量把它放回去),但是我的猜測是錯誤的,它回到原來的位置,所以調用show()就足夠了。沒有冗餘代碼的更新版本:http://jsfiddle.net/doktormolle/mpQwy/ –

+0

非常感謝您的解釋,並對作爲腳本新手感到抱歉。所有「this.content」中的「this」是否指「map.getDiv()」?我嘗試使用colorbox自己做,但失敗了,如果你有時間可以看看這個:http://stackoverflow.com/q/18370945/1479264 – jellday