我有一个带有Google地图mashup的页面,其中的图钉按天(星期一,星期二等)进行颜色编码。包含地图的IFrame是动态调整大小的,因此在调整浏览器窗口大小时会调整其大小。
我想在地图窗口的角落放置一个图例,告诉用户每种颜色的含义。 Google Maps API包含一个具有我想要的行为的GScreenOverlay
类,但它只允许您指定要用作叠加层的图像,而我更喜欢使用带有文本的DIV。在(例如)左下角将DIV放置在地图窗口上的最简单方法是什么?当浏览器窗口调整大小时,它将自动停留在相对于角落的相同位置?
答案 0 :(得分:9)
您可以添加自己的自定义控件并将其用作图例。
此代码将添加一个150w x 100h(灰色边框/带白色背景)框和其中的“Hello World”字样。您可以在图例中替换所需的任何HTML文本。这将保持固定在右上角(G_ANCHOR_TOP_RIGHT)10px向下和50px超过地图。
function MyPane() {}
MyPane.prototype = new GControl;
MyPane.prototype.initialize = function(map) {
var me = this;
me.panel = document.createElement("div");
me.panel.style.width = "150px";
me.panel.style.height = "100px";
me.panel.style.border = "1px solid gray";
me.panel.style.background = "white";
me.panel.innerHTML = "Hello World!";
map.getContainer().appendChild(me.panel);
return me.panel;
};
MyPane.prototype.getDefaultPosition = function() {
return new GControlPosition(
G_ANCHOR_TOP_RIGHT, new GSize(10, 50));
//Should be _ and not _
};
MyPane.prototype.getPanel = function() {
return me.panel;
}
map.addControl(new MyPane());
答案 1 :(得分:3)
我会像以下一样使用HTML:
<div id="wrapper">
<div id="map" style="width:400px;height:400px;"></div>
<div id="legend"> ... marker descriptions in here ... </div>
</div>
然后您可以设置此样式以使图例保持在右下角:
div#wrapper { position: relative; }
div#legend { position: absolute; bottom: 0px; right: 0px; }
position: relative
会导致所有包含的元素相对于#wrapper
容器定位,而position: absolute
会导致#legend
div被“拉出”流出并坐在地图上方,将其右下角保持在#wrapper
的底部,并根据需要拉伸以包含标记说明。