2012-03-30 67 views
1

我在格式生成XML:如何在Google Map HTML infoWindow中放置外部URL超链接?

<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地址在信息窗口上的标记,当我点击它。 但是,如果我把它放在XML中,我的地图不会显示任何标记。 如果我将示例中的这个URL地址剪切为https://myhostname.com/webtop/AELView infoWindow会显示此信息,但是显示为普通文本而非URL。 如何启用所以当点击标记我可以点击并转到外部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&amp;v=2&amp;sensor=false&amp;" 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> 

回答

1

目前你的XML是无效的,所以它不能被解析。
的&链接的属性里面必须被编码为&amp;

除了:没有属性“报警”的XML里面。

目前这将显示信息窗口中的链接(当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'));