2012-10-02 41 views
0

當我使用jquery-ui-map創建一個谷歌地圖實例這樣的目標一個jQuery UI的地圖生成的地圖:如何使用信息框

$('#CHMap').gmap({ 
    mapTypeControl : false 
}).bind('init', function(evt, map) { 
    log("Map initilised"); 
}); 

然後在別處劇本我使用InfoBox添加一些充滿數據風格能信息框從地理定位服務拉回,像這樣:

var boxText = document.createElement("div"); 
var ib = new InfoBox(myOptions); //myOptions can be ignored for this example 

$.each(data, function(name, value) { 
    $('#CHMap').gmap('addMarker', { 
    id:value['YourId'], 
    'position': value['Latitude']+','+value['Longitude'], 
    'bounds': true, 
    'icon': '/img/gicon.png' 
    }).click(function() { 
    boxText.innerHTML = "hello"; 
    ib.setContent(boxText); 
    ib.open(map, this); 
    }); 
}); 

「數據」是一個對象從地理定位服務返回。如果我在第一次創建gmap時將上面的'addMarker'代碼放在綁定的'init'函數中,infoBox顯示正常。當我在別處使用'addMarker'代碼時,在控制檯中出現「Uncaught ReferenceError:map is not defined」錯誤。

如何正確引用'地圖'?看起來我不能做var map = $('#CHMap').gmap({//options});,因爲'jquery-ui-map'文檔提示gmap不會返回任何內容。

回答

0

我認爲你可以從OP做

var map = $('#CHMap').gmap(); 

注意。在最新的插件的正確方法是:

var map = $('#CHMap').gmap('get', 'map'); 

我看不出它說該API

在沒有返回值時,你需要運行訪問地圖,你可以添加一個谷歌裏面的代碼映射事件監聽器,等待直到地圖塊加載像這樣。

由於Gmaps是從谷歌獲取異步你不能總是確保它會在你打電話時,除非你做這樣的事情。

google.maps.event.addListener(YOUR_GOOGLE_MAPS_INSTACE, 'tilesloaded', function() { 
     // put your initialization code in here. 
} 

打完地圖是完全加載它只會執行。

來自巴西的歡呼聲!

+0

嗨克里斯蒂亞諾,事實證明的方式來獲得地圖上的把手是'無功地圖= $(「#CHMap」)。GMAP(「得到」,「地圖」)'.I'll接受你回答並將編輯它爲任何未來的谷歌。謝謝! –