C# 谷歌地图多标记信息窗口不工作
我在我的网页上使用谷歌地图API。我正在尝试向带有信息窗口的页面添加多个标记。标记添加正常,但“信息”窗口都包含最后一个标记的信息。有什么想法吗C# 谷歌地图多标记信息窗口不工作,c#,javascript,jquery,asp.net,C#,Javascript,Jquery,Asp.net,我在我的网页上使用谷歌地图API。我正在尝试向带有信息窗口的页面添加多个标记。标记添加正常,但“信息”窗口都包含最后一个标记的信息。有什么想法吗 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> <Ser
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="http://testserver/se1/WebServices/ShelterWebService.asmx" />
</Services>
</asp:ScriptManager>
<asp:LinkButton ID="BtnHome" runat="server" onclick="BtnHome_Click">Home</asp:LinkButton>
<div id="map_canvas"></div>
<script type="text/javascript">
var geocoder;
var map;
var addresses;
function GetShelters() {
ShelterExpress.WebServices.ShelterWebService.GetShelters('', OnGetSheltersComplete);
}
function OnGetSheltersComplete(retValue) {
addresses = new Array();
for (x in retValue) {
addresses.push(retValue[x]["Address"]);
}
GenerateMap();
}
function GenerateMap() {
/* Create the geocoder */
geocoder = new google.maps.Geocoder();
/* Some initial data for the map */
mapOptions = {
zoom: 10
, center: new google.maps.LatLng(0, 0)
, mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
//var infowindow = new google.maps.InfoWindow();
var marker, i;
if (geocoder) {
for (var item in addresses){
geocoder.geocode({ 'address': addresses[item] }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
/* Position the map */
map.panTo(results[0].geometry.location);
/* Put a marker */
marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: addresses[item]
});
var infowindow = new google.maps.InfoWindow({ content: addresses[item] });
infowindow.open(map, marker);
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map, marker);
});
}
});
}
}
}
$(document).ready(function() {
GetShelters();
});
我猜您复制了一个对象或数组。您需要提供有关地址[项目]的更多信息 在javascript中,复制字符串或布尔值之类的内容会得到一个实际的副本,但复制的是一个对象或数组 编辑以获取新信息:如果加载了jQuery,克隆JS对象的一种快速方法是使用$.extend
// Shallow copy
var newObject = jQuery.extend({}, oldObject);
// Deep copy
var newObject = jQuery.extend(true, {}, oldObject);
对于数组,您可以只使用javascript的切片
a = [1];
b = a.slice();
这将取决于retValue[x][Address]是什么以及您加载了哪些库。不,您没有,您只是移动了缺少的信息。现在我们需要知道retValue[x][Address]是什么。这就是您推送到地址[项目]的内容。同样,这个东西可能是一个对象或数组,所以它需要被克隆,而不是被引用。请阅读我提供的链接。感谢您的帮助:抱歉误解。addresses是服务器端的通用集合,我将从retValue{alerttypeofretValue[x]…中的x开始,以了解它是什么。
a = [1];
b = a.slice();