我在地圖應用程序中遇到問題,我試圖在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拖放到另一個位置並再次點擊標記以顯示新位置的新全景,自定義控件移動到全景視圖的左側。
正確定位(當最初被加載系統)
和馬車定位(當i切換到在第二時間全景視圖帶有標記的點擊)
的額外信息:
因爲谷歌地圖需要知道容器的高度和寬度才能正常工作,所以我使用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控制? 由於現在...
那麼,爲什麼自定義控件點擊後向左移動,看全景,同時它正確定位時,首先裝載解決了問題... – Alper 2014-09-04 22:16:33