我已经以格式生成了XML:
<marker lat="41.932797" lng="21.483765" url="https://myhostname.com/webtop/AELView/?textdirection=LTR&guiorientation=LTR&filtername=Example_Unassigned&filtertype=system" severity="0" />
<marker lat="41.532797" lng="21.183767" url="https://myhostname.com/webtop/AELView/?textdirection=LTR&guiorientation=LTR&filtername=Example_Unassigned&filtertype=device" severity="1" />
我想在点击它时将外部URL地址放在标记上的infoWindow中。 但是如果我把它放在XML中,我的地图就不会显示任何标记。 如果我在示例中仅将此URL地址剪切为https://myhostname.com/webtop/AELView,则infoWindow会显示此信息,但作为普通文本而非URL。 如何启用,点击标记时我可以点击并转到外部网址? 我唯一的HTML文件是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Google Maps</title>
<script src="http://maps.google.com/maps?file=api&v=2&sensor=false&" type="text/javascript"></script>
</head>
<body onunload="GUnload()">
<table border=1>
<tr>
<td>
<div id="map" style="width: 1550px; height: 1450px"></div>
</td>
</tr>
</table>
<script type="text/javascript">
//<![CDATA[
if (GBrowserIsCompatible()) {
var gmarkers = [];
function createMarker(point,name,alarm) {
var marker = new GMarker(point);
GEvent.addListener(marker, "click", function() {
// **this is where I wan to call URL**
marker.openInfoWindowHtml(alarm);
});
return marker;
}
function myclick(i) {
GEvent.trigger(gmarkers[i], "click");
}
var map = new GMap2(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng( 41.932797,21.483765), 10);
GDownloadUrl("alarms.xml", function(doc) {
var xmlDoc = GXml.parse(doc);
var markers = xmlDoc.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
// obtain the attribues of each marker
var lat = parseFloat(markers[i].getAttribute("lat"));
var lng = parseFloat(markers[i].getAttribute("lng"));
var point = new GLatLng(lat,lng);
var alarm = markers[i].getAttribute("alarm");
var label = markers[i].getAttribute("label");
// create the marker
var marker = createMarker(point,label,alarm);
map.addOverlay(marker);
}
});
}
//]]>
</script>
</body>
</html>
答案 0 :(得分:1)
目前您的XML无效,因此无法解析
&amp; url-attributes内部必须编码为&
除此之外:XML中没有属性“alarm”。
这当前会在infoWindow中显示一个链接(当XML被修复时): 现在:
var alarm = markers[i].getAttribute("alarm");
然后:
var alarm = document.createElement('a');
alarm.setAttribute('href',markers[i].getAttribute('url'));
alarm.appendChild(document.createTextNode('click here'));