2014-09-04 61 views
0

我在地圖應用程序中遇到問題,我試圖在Panorama上放置coustom控件,當用戶單擊此自定義按鈕時,全景信息將被保存。Google maps api v3自定義控件在執行panorama.setPosition函數後向左移動

爲此,我使用的功能,以檢查是否有一個panaroma數據存在

function checkforstreetview(mapid){ 
    service.getPanoramaByLocation(markers[mapid].getPosition(), 50, function(r,status){ 
     if(status==google.maps.StreetViewStatus.OK){ 
      google.maps.event.addListener(markers[mapid], 'click', function (e) { 
       panorama[mapid].setVisible(true); 
       return false; 
      }); 
      panorama[mapid].setPosition(markers[mapid].getPosition()); // custom control is moving to the left occurs here 
     } 
    }); 
} 

在地圖上爲第一,我得到標記位置和50m以內檢查全景然後,如果有全景數據,我綁定點擊事件標記切換到全景。

我正在通過customdiv控制;

panorama[mapid].controls[google.maps.ControlPosition.TOP_CENTER].push(customdiv[0]); 
定製控制的

HTML標記是:

<div id="customdiv" title="Get data" style="height:10%;cursor:pointer;margin:0 auto;"><img src="/customdiv.jpg" style="height:100%;float:right;margin:5px;"/></div> 

同時,我已經分配了一個功能,用於拖動和下降標記事件(用addListener方法),因此,如果所述標記拖動'n放到另一個位置,checkforstreetview函數再次執行。

那麼,主要問題是什麼?

在第一次執行時沒有問題,當我點擊標記時,全景圖正確打開並且自定義控件正確放置,但是在關閉全景圖之後,將drag'n拖放到另一個位置並再次點擊標記以顯示新位置的新全景,自定義控件移動到全景視圖的左側。

正確定位(當最初被加載系統) enter image description here

和馬車定位(當i切換到在第二時間全景視圖帶有標記的點擊) enter image description here

的額外信息:

因爲谷歌地圖需要知道容器的高度和寬度才能正常工作,所以我使用visibility: hidden規則作爲地圖容器,而不是display:none,但我認爲這不能成爲問題,因爲在系統加載一切正常工作。

我已經在Windows 7/Firefox的測試 - 鉻 - 歌劇 - 野生動物園 - IE(最新的版本)

嘗試的解決方案:

  • 許多CSS黑客
  • 重新定位定製控制通過google.maps.ControlPosition.TOP_CENTER
  • 我試圖把自定義控制到另一個位置BOTTOM_CENTER,LEFT_BOTTOM,..等,但每次,自定義控制移動到另一個位置(向右,頂部,左移)
  • 最後,我已經註釋掉了panorama[mapid].setPosition(markers[mapid].getPosition());行,並且我使用標準packman進行全景圖/地圖切換,然後在自定義控件定位上沒有問題。

EDIT:另一個有趣的一點是,自定義控制(和地址欄中)的錯誤定位之後當我點擊用於全景的下一個/前一個圖像的下一個/前一個箭頭,自定義控制和地址欄中變爲正常(正確的位置)

什麼可以解決停止移動/移動costom控制? 由於現在...

回答

0

我已經通過以下功能

google.maps.event.addListener(panorama[mapid], 'position_changed', function() { 
    google.maps.event.trigger(panorama[mapid],'resize'); 
}); 
相關問題