【发布时间】:2015-06-18 21:22:47
【问题描述】:
我正在使用 Google Maps API,并尝试在单击标记时显示“卡片”(与工具提示/信息框相对)。我跟着this 让卡片出现。但是,此人使用的方法是附加一个巨大的字符串,即白盒的 html,其中所有链接/信息都硬编码到此字符串中。
我正在尝试更改此设置,以便它可以动态插入所需的信息(我已删除卡的代码,因此单击标记时它仅显示一个灰色框,您可以看到代码here )。
重要的代码是:`
google.maps.event.addDomListener(marker, 'click', function() {
// Prevents card from being added more than once (i.e. when page is resized and google maps re-renders)
if ( $( ".place-card" ).length === 0 ) {
var rootDiv = document.createElement('div');
rootDiv.style = ('position', 'absolute');
rootDiv.style = ('right', '0px');
rootDiv.style = ('top', '0px');
var secondDiv = document.createElement('div');
secondDiv.style = ('margin', '10px');
secondDiv.style = ('padding', '1px');
secondDiv.style = ('-webkit-box-shadow', 'rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px');
secondDiv.style = ('box-shadow', 'rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px');
secondDiv.style = ('border-radius', '2px');
secondDiv.style = ('background-color', 'white');
secondDiv.style = ('width', '200px');
secondDiv.style = ('height', '150px');
rootDiv.appendChild(secondDiv);
// this does not work
// $(".gm-style").append(rootDiv);
// this works
$(".gm-style").append('<div style="position: absolute; right: 0px; top: 0px;"><div style="margin: 10px; padding: 1px; -webkit-box-shadow: rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px; box-shadow: rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px; border-radius: 2px; background-color: white; width: 200px; height: 150px"></div></div>');
}
});
(您可以看到我正在尝试用实际的 div 替换 str2...我也尝试过,但没有调用 String(),这也不起作用)。
我想知道是否有比简单地将字符串附加在一起以使这张卡片出现更好的方法。
另外,如果有人可以解释 $(".gm-style") 的作用,那将是很可爱的。 (经过大量谷歌搜索后,我的理解是它是 document.getElementById 的替代品,但 .gm-style 是类名......我尝试的任何替代“get___by___”函数都会导致错误)。
谢谢!
【问题讨论】:
-
$("")是一个 jquery 选择器。.用于类名 -
$()是 jquery 选择器,这意味着您可以使用它来选择使用CSS selector的元素,而不仅仅是id。例如:$('body, .foo, #bar')
标签: javascript html css google-maps