2007年1月18日星期四

GoogleMAPs Hack

问题的提出:在google map api下写程序的时候,在地图的最下会显示google log和Terms of Use,但是有一个问题如果你点击google log或者Terms of Use,将会跳出你的页面,打断程序显示。如何让链接新开一页面显示呢?

Terms of Use比较好办:
可以使用类似如下代码查找替代


var ANode = document.getElementsByTagName("A");
for (var i = 0; i < ANode.length; i++) {
if (ANode[i].innerHTML = "Terms of Use") {
ANode[i].target="_top";
};};

但是logo图象对应的链接就比较麻烦了,logo图象在"DOM"里显示为"IMG"标签而"A"标签被google故意隐藏了,你点击的时候会将你带到google maps自己的网站上,显示你刚才指定的区域。如何修改target还得废点大脑。无巧不成书,晚上在调试的时候,突然发现logo被替换为文字了,而下午还显示正常,期间并未修改代码。重新回到原来的地方检查,才知道原来晚上google升级api了,logo链接对应的"A"标签不再被隐藏了,haha,顺应民意啊!那下面就简单了,你可以在下面测试地图,链接会在新窗口打开。

var ANode = document.getElementsByTagName("A");
for (var i = 0; i < ANode.length; i++) {
ANode[i].target="_blank";} ;
map.openInfoWindow(map.getCenter(),document.createTextNode("Tag('A').length="+ANode.length));
};

GoogleMAPs TEST


update:
今天下午缺省版本又退回到v2.70a了,本文以上特性在v2.71中可以获得支持。
现在v2.73已经建立而v2.70a还是缺省的版本,所以现在的api一共有四个版本,而不是通常的三个。
可以通过以下方法获得新版本api:
&v=2 gives v2.70a "default"
&v=2.x gives v2.71 "current"
v2.72 next
v2.73 latest

没有评论: