Google maps 谷歌地图奇怪行为-标记信息窗口总是显示来自同一标记的信息

Google maps 谷歌地图奇怪行为-标记信息窗口总是显示来自同一标记的信息,google-maps,infowindow,Google Maps,Infowindow,我有多个不同颜色的地图标记和一些信息窗口。一切正常,除了当我点击某个标记(示例中有5个标记)时,它会将光标切换到第4个标记上,并始终显示来自该标记的信息窗口。因此,它始终显示相同的信息窗口。 这是一个很小的html文件,如果有人知道这个问题的解决方案,我将不胜感激。 我也尝试过使用google.maps.event.adddomstener,因为我认为存在问题,但这是相同的行为 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

我有多个不同颜色的地图标记和一些信息窗口。一切正常,除了当我点击某个标记(示例中有5个标记)时,它会将光标切换到第4个标记上,并始终显示来自该标记的信息窗口。因此,它始终显示相同的信息窗口。 这是一个很小的html文件,如果有人知道这个问题的解决方案,我将不胜感激。 我也尝试过使用
google.maps.event.adddomstener
,因为我认为存在问题,但这是相同的行为

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps Javascript API v3 Example: Loading the data from an XML</title> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript" src="downloadxml.js"></script>

<script type="text/javascript"> 
//<![CDATA[





     // global "map" variable
      var map = null;






function initialize() {

  var myOptions = {
    zoom: 8,
    center: new google.maps.LatLng(43.907787,-79.359741),
    mapTypeControl: true,
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
    navigationControl: true,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  map = new google.maps.Map(document.getElementById("map_canvas"),
                                myOptions);

  google.maps.event.addListener(map, 'click', function() {
        infowindow.close();
        });
      // Read the data from example.xml
      downloadUrl("example7.xml", function(doc) {
        var xmlDoc = xmlParse(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 google.maps.LatLng(lat,lng);
          var html = markers[i].getAttribute("html");




        var severity = parseFloat(markers[i].getAttribute("severity"));

        var color= "66FF33";


       if (severity == 0) color = "66FF33";
       else if (severity == 1) color = "990099";
        else if (severity == 2) color = "00CCFF";


        var pinImage = new google.maps.MarkerImage("http://www.googlemapsmarkers.com/v1/" + color,
        new google.maps.Size(21, 34),
        new google.maps.Point(0,0),
        new google.maps.Point(10, 34));


      var marker = new google.maps.Marker({
                position: point,
                map: map,
                icon: pinImage,

            });

 google.maps.event.addListener(marker, 'click', function() {
        var alarmanchor1='<span class="url"><a href="' + html;
        var alarmanchor2='" title="www" target="_blank">Event List</a></span>';
        var contentString=alarmanchor1+alarmanchor2;
        infowindow.setContent(contentString); 
        infowindow.open(map,marker);
        });




        }

      });
    }

var infowindow = new google.maps.InfoWindow(
  { 
    size: new google.maps.Size(150,50)
  });


//]]>
</script> 

  </head> 
<body style="margin:0px; padding:0px;" onload="initialize()"> 


    <table border="1"> 
      <tr> 
        <td> 
           <div id="map_canvas" style="width: 1050px; height: 1200px"></div> 
        </td> 

      </tr> 
    </table> 


<script src="urchin.js" type="text/javascript"> 
</script> 


  </body> 
</html> 

GoogleMapsJavaScriptAPI v3示例:从XML加载数据
//
我的XML是:

<markers>

 <marker lat="43.65654" lng="-79.90138" html="http://www.google.com"  label="Marker One" severity="0" />
 <marker lat="43.91892" lng="-78.89231" html="http://www.yahoo.com" label="Marker Two" severity="1" />
 <marker lat="43.82589" lng="-79.10040" html="http://www.sport.com"  label="Marker Three" severity="2" />
  <marker lat="43.72589" lng="-79.60040" html="http://www.stackoverflow.com"  label="Marker Fourth" severity="3" />
   <marker lat="43.52589" lng="-79.70040" html="http://www.stackoverflow.com"  label="Marker Five" severity="4" />
 </markers> 

只需将您的代码更改为此,这样它就可以为每个元素获得正确的url

<a href="' + html;
”;var contentString=alarmanchor1+alarmanchor2;setContent(contentString);infowindow.open(映射、标记);})(marker,i));

您也可以共享xml文件吗?您好。谢谢你的回答,我用我的XML更新了它。好的,我会再看一次。@Ersel one update我设法更改了我的代码,现在它没有切换到另一个标记,但仍然显示xmlgoogle.maps.event.addListener中最后一个标记的url(标记,'单击',(函数(标记,I){返回函数(){var alarmanchor1='';var contentString=alarmanchor1+alarmanchor2;infowindow.setContent(contentString);infowindow.open(映射,标记);}}(标记,i));谢谢你们的努力!我以为只获取html值就足够了,但你们是对的!我可以再问你们两个问题吗:对于API 3,我不需要购买密钥?因为我想上传这个文件并将其传输到某个应用程序服务器。API 3中的第二个问题是如何更改图标的大小?因为如果我更改了新的google.maps.Size(21,34),new google.maps.Point(0,0),new google.maps.Point(10,34));到new google.maps.Size(15,30),我的标记被剪掉或带有一些红色阴影。谢谢!!!!!不,你不需要密钥,但可以免费获取一个,所以这不是问题。我不确定,我使用此工具创建我的标记。很高兴提供帮助:)
<a href="' +markers[i].getAttribute("html");
google.maps.event.addListener(marker, 'click', (function(marker, i) { return function(){ var alarmanchor1='<span class="url"><a href="' +markers[i].getAttribute("html"); var alarmanchor2='" title="www" target="_blank">Event List</a></span>'; var contentString=alarmanchor1+alarmanchor2; infowindow.setContent(contentString); infowindow.open(map, marker); } }) (marker, i));