2014-02-06 69 views
0

我寫了一個腳本,允許管理員點擊地圖(谷歌地圖API v3)設置儘可能多的位置,他想要的,命名它們。也就是說,點擊地圖會顯示一個信息窗口,其中包含一個用於命名該位置的表單。這些位置保存在數據庫(LatLng座標)中,並在地圖上顯示爲標記。設置谷歌地圖座標爲中心屏幕

然後,用戶(管理員或不管理員)可以從選擇框(按名稱)選擇這些位置中的任何一個。選擇此項後,可以選擇在選定位置顯示帶有標記的地圖。標記正確顯示,但我希望地圖在該位置居中。也就是說,屏幕中間的標記,而是顯示在最左上角。事實上,最初,標記甚至不可見。您必須拖動地圖並留下一點點才能顯示。

這很奇怪,因爲我對標記和中心屏幕使用相同的座標。這裏是我的代碼(或相關部分,至少):

   var latlng = new google.maps.LatLng(parseFloat(location.lat), parseFloat(location.ltn)); 
       var latlng2 = new google.maps.LatLng(parseFloat(location.lat) + 0.025, parseFloat(location.ltn) - 0.05); 
       var map = new google.maps.Map($('.modal-body', modal)[0], { 
        'center': latlng, 
        'zoom': 13, 
        'mapTypeId': google.maps.MapTypeId.ROADMAP, 
       }); 
       var marker = new google.maps.Marker({ 
        'position': latlng, 
        'map': map, 
        'title': location.name, 
       }); 
       marker.setMap(map); 

注意如何樣品中我不使用latlng2值。這是我的嘗試,但它似乎只適用於給定的分辨率。我怎樣才能將地圖置於這些座標中?

問候

編輯:

   $(map).focus(); 
       modal.on('shown', function() { 
        $(window).resize(function() { 
         google.maps.event.trigger(map, 'resize'); 
        }); 
        google.maps.event.trigger(map, 'resize'); 
       }); 
+0

這部分代碼似乎確定。你有沒有其他可以重新定位中心的東西? –

+0

我剛剛編輯了這個問題。這有幫助嗎? –

+0

是的,我忘了說。這顯示在引導模式,雖然我不明白爲什麼相關=) –

回答

2

我不知道這是否會工作...如果窗口大小調整是導致比它可能的幫助。我不知道它將如何與其他代碼交互。

resize事件添加事件偵聽器:

... 
    marker.setMap(map); 

    google.maps.event.addListener(map, 'resize', function() { 
     map.setCenter(latlng); 
    }); 
+0

有趣。我正在使用latlng2,所以它「看起來」居中。我添加了你的代碼,它扭轉了效果!調用setCenter()實際上會將標記返回到左上角。 –

+0

我不理解這種行爲。 –

+0

檢查[這個問題](http://stackoverflow.com/questions/11742839/showing-a-google-map-in-a-modal-created-with-twitter-bootstrap)也許你得到一些提示 –