2012-10-02 42 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接受你回答并将编辑它为任何未来的谷歌。谢谢! –