English 中文(简体)
修复了谷歌地图Mashup中的图例
原标题:
  • 时间:2008-08-31 00:41:03
  •  标签:

我有一个带有谷歌地图mashup的页面,其中有按天(星期一、星期二等)进行颜色编码的图钉。包含地图的IFrame是动态调整大小的,因此当浏览器窗口调整大小时,它会调整大小。

我想在地图窗口的角落里放一个图例,告诉用户每种颜色的含义。谷歌地图API包括GScreenOverlay类,它具有我想要的行为,但它只允许您指定一个图像用作覆盖,我更喜欢使用其中包含文本的DIV。将DIV定位在地图窗口上(例如)左下角的最简单方法是什么?当调整浏览器窗口的大小时,DIV将自动保持在相对于该角的同一位置?

最佳回答

您可以添加自己的自定义控件并将其用作图例。

此代码将添加一个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());
问题回答

我会使用如下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则将导致#图例div被“拉出”流并位于映射上方,使其右下边缘位于#1wrapper的底部,并根据需要进行拉伸以包含标记描述。





相关问题