2012-03-30 6 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が無効であるため、解析することはできません。 URL-属性内部 &
は、それとは別に&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'));