Google maps 谷歌地图奇怪行为-标记信息窗口总是显示来自同一标记的信息
我有多个不同颜色的地图标记和一些信息窗口。一切正常,除了当我点击某个标记(示例中有5个标记)时,它会将光标切换到第4个标记上,并始终显示来自该标记的信息窗口。因此,它始终显示相同的信息窗口。 这是一个很小的html文件,如果有人知道这个问题的解决方案,我将不胜感激。 我也尝试过使用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"
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));