2012-05-22 40 views
1

之前,我按照another answer中的說明使infowindow在地圖上只有一個點時自動打開。我有這個工作,但infowindow在頂部稍微被切斷,因爲手動打開infowindow時地圖不重新更新(就像您單擊標記以顯示infowindow時一樣)。我的觀點只使用基本的:Gmaps4Rails:當只有一個標記可用時,設置縮放和平移位置。

gmaps(:map_options => { :auto_adjust => true }, 
     :markers => { :data => @json, :options => {:do_clustering => true} }) 

在我看來,下面的JavaScript:

<script type="text/javascript" charset="utf-8"> 
    Gmaps.map.callback = function() { 
    if (Gmaps.map.markers.length == 1) { 
     var marker = Gmaps.map.markers[0]; 
     var infowindow = marker.infowindow; 
     infowindow.open(Gmaps.map.map, marker.serviceObject); 
    } 
    } 
</script> 

我試圖找出是雙方最好的方式設置縮放級別到14以及重新標記標記,以便整個infowindow顯示在屏幕上並且不會在頂部切斷。

我也看過this question誰似乎有類似的問題,但不包括recentering。我也可以執行Gmaps.map.map.setZoom(14);在控制檯中執行,並執行以及Gmaps.map.map.panBy(0,-80);但他們似乎並沒有從回調中執行。另外,我不確定panBy是解決我的infowindow被切斷問題的最有效方法。

使用: gmaps4rails(1.4.8)和Rails(3.2.3)

任何人有任何想法或意見?

謝謝!

+0

'panBy'是一個很好的解決方案,它應該在回調中工作,沒有理由! – apneadiving

+0

謝謝apneadiving!我看起來有一半。我可以讓panBy在回調中工作,但是也應該在那裏設置縮放工作嗎?現在我打電話給Gmaps.map.map.setZoom(14);然後Gmaps.map.map.panBy(0,-80);.平移似乎現在正在工作(可能是之前的緩存問題),但不是縮放。如果我通過選項散列傳遞縮放,則平鋪看起來不會做任何事情,並且地圖根本不居中。是否有另一個選項,我應該通過放大選項或我應該以不同的方式調用setZoom? –

+0

很奇怪,回調中的一切都應該正常工作。我會看一看。 – apneadiving

回答

1

正如我們最後得出的結論,當你有一個標記時,你應該使用專用的幫手選項。

由於谷歌地圖異步加載。

0

我已經得到了類似的問題,在我的應用程序,但我做了以下解決。

嘗試

1)改變map_option 「auto_adjust」 爲假如下

gmaps(:map_options => {:auto_adjust =>假}, :標記=> {:數據=> @json,:選項=> {:do_clustering =>真}})

2)現在,在回調函數然後將地圖縮小調用map.setZoom(你的價值)

相關問題