我正在使用jquery-ui-map创建一个谷歌地图实例,如下所示:
$('#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”代码时,控制台中出现“未捕获的 ReferenceError:未定义地图”错误。
如何正确引用“地图”?看起来我不能这样做var map = $('#CHMap').gmap({//options});
,因为“jquery-ui-map”文档建议 gmap 什么都不返回。