【发布时间】:2023-03-15 21:05:01
【问题描述】:
我目前正在处理一个 ASP.NET 项目,我正在使用 Google Maps API 为数据库中注册的每家公司显示一个标记。
一切正常,但是当我点击一个标记时,我公司列表中最后一家公司的工具提示/对话框总是显示出来,而不是实际点击的公司标记。
我真的不明白为什么它总是最后出现的标记。这是我的更新代码:
JavaScript.Text = @"<script type='text/javascript'>
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById('map'));
map.setCenter(new GLatLng(56.4, 10.57983), 9);
map.enableScrollWheelZoom();
}
}
</script> ";
foreach (MemberProfile m in relatedMembers)
{
XmlDocument doc = new XmlDocument();
string address = m.Address;
string zip = m.Zip;
string city = m.City;
string navn = m.Name;
string tlf = m.Phone;
doc.Load("http://maps.googleapis.com/maps/api/geocode/xml?address=" + zip + "+" + city + "+" + address + "+DK&sensor=true&key=ABQIAAAAEaY4JLb9fZFGMlDKuMUlWBRSvyGIkBO7X03pzlT7Z30EPXHR8BS0rXL_ShFm2gc79lZTw2Zak88wng");
XmlNode latNode = doc.SelectSingleNode("GeocodeResponse/result/geometry/location/lat/text()");
XmlNode lonNode = doc.SelectSingleNode("GeocodeResponse/result/geometry/location/lng/text()");
if (latNode != null && lonNode != null)
{
JSAddMarkers.Text += @"<script type='text/javascript'>
var marker = new GMarker(new GLatLng(" + latNode.Value + "," + lonNode.Value + ")); "
+ "var html = '<b>" + navn + "</b><br />" + address + "<br /> " + zip + " " + city + "<br />" + tlf + "'; " + "GEvent.addListener(marker, 'click', function() { marker.openInfoWindowHtml(html); });"
+ "map.addOverlay(marker);"
+ "</script>";
}
如果你们当中有人能找出原因,我很高兴收到你们的来信!任何帮助/提示表示赞赏:-)
一切顺利,
博
【问题讨论】:
-
我猜这个故障是在创建地图对象并在其上添加标记的顺序。您应该首先创建地图对象,然后执行循环为其添加标记。
-
嗯,我猜你是对的!我将使用我的新代码更新我的第一篇文章,其中我将地图的创建移到了 foreach 循环之上。虽然地图上没有标记:/ 可能错过了沿路的某些东西..
-
仍然没有找到解决方案 :( 我已经尝试重构我的代码很多,所以它输出一个 sn-p 并添加了所有标记。仍然是只显示每个点的最后一个标记。有人吗?
标签: c# javascript asp.net google-maps