使用InfoBox时如何瞄准jQuery-UI地图生成的地图
-
12-12-2019 - |
题
我正在使用 jquery-ui-map 创建像这样的Google Maps实例:
$('#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);
});
});
.
'data'是从地理位理服务返回的对象。如果我在首次创建绑定的“init”函数中放置上面的'添加剂'代码,则信息框显示正常。当我在其他地方使用“添加剂”代码时,我在控制台中获取“未捕获的ribentError:未定义映射”错误。
如何正确引用“地图”?看起来我不能做生意icetagcode,因为'jquery-ui-map'文档表明gmap没有任何东西。
解决方案
我认为你可以做
var map = $('#CHMap').gmap();
.
of op。最新插件中的正确方法是:
var map = $('#CHMap').gmap('get', 'map');
.
我没有看到它在哪里说它在API中没有任何东西返回
当您需要运行映射时,您可以在Google Maps事件侦听器中添加代码,该侦听器等待,直到地图图块加载。
在gmaps从谷歌获取异步时,除非你做这样的事情,否则不能肯定会在那里。
google.maps.event.addListener(YOUR_GOOGLE_MAPS_INSTACE, 'tilesloaded', function() {
// put your initialization code in here.
}
.
所以它只会在映射完全加载后执行。
从巴西欢呼!
不隶属于 StackOverflow