C# 谷歌地图标记错误

C# 谷歌地图标记错误,c#,javascript,asp.net,google-maps,C#,Javascript,Asp.net,Google Maps,我目前正在从事一个ASP.NET项目,在该项目中,我使用Google Maps API为数据库中注册的每个公司显示一个标记 一切正常,但当我点击一个标记时,我的公司列表中最后一个公司的工具提示/对话框总是出现,而不是实际点击的公司标记 我真的搞不懂为什么它总是最后一个出现。这是我的更新的代码: JavaScript.Text = @"<script type='text/javascript'> function load() {

我目前正在从事一个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>";
        }
JavaScript.Text=@”
函数加载(){
if(GBrowserIsCompatible()){
var map=newgmap2(document.getElementById('map');
赛特中心地图(新格拉特林(56.4,10.57983),9);
map.enableCrollWheelZoom();
}
}
";
foreach(relatedMembers中的MemberProfile m)
{
XmlDocument doc=新的XmlDocument();
字符串地址=m.地址;
字符串zip=m.zip;
字符串城市=m.城市;
字符串navn=m.名称;
字符串tlf=m.电话;
文件加载(“http://maps.googleapis.com/maps/api/geocode/xml?address=“+zip+”+“+”+城市+“+”+地址+“+DK&sensor=true&key=abqiaaaeay4jlb9fzfgmldkumulwbrsvygikbo7x03pzlt7z30epxhr8bs0rxl_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+=@”
var marker=newgmarker(newglatlng(“+latNode.Value+”,“+lonNode.Value+”);”
+“var html=”“+navn+”
“+address+”
“+zip+”+city+”
“+tlf+”;“+”GEvent.addListener(marker,'click',function(){marker.openInfoWindowHtml(html);”;” +“map.addOverlay(标记);” + ""; }
如果你们中的任何人能找出原因,我将很高兴听到你们的消息!任何帮助/提示都将不胜感激:-)

祝你一切顺利

Bo

试试这个

var point =new GLatLng(" + latNode.Value + "," + lonNode.Value + ");
var marker = createMarker(point, address,zip,city,navn);
map.addOverlay(marker);



function createMarker(point, address, zip,city, navn) {
      var marker = new GMarker(point, customIcons[type]);
      var html = "Address:<b style='padding-left:6px'>" + address+ "</b><br/>zip:<b  style='padding-left:6px'>"+ zip+ "</b><br/>city:<b  style='padding-left:6px'>"+ city+ "</b>";
      GEvent.addListener(marker, 'mouseover', function() {
        marker.openInfoWindowHtml(html);
      });
      GEvent.addListener(marker, "mouseout", function() {
                 marker.closeInfoWindow();
   });
      return marker;
    }
var point=newglatlng(“+latNode.Value+”,“+lonNode.Value+”);
var marker=createMarker(点、地址、邮政编码、城市、导航);
添加覆盖图(标记);
函数createMarker(点、地址、邮政编码、城市、导航){
var标记=新的GMarker(点,自定义图标[类型]);
var html=“地址:”+Address+”
zip:“+zip+”
城市:“+city+”; addListener(标记'mouseover',函数(){ marker.openInfoWindowHtml(html); }); addListener(标记“mouseout”,函数(){ marker.closeInfoWindow(); }); 返回标记; }
我想问题出在创建地图对象并在其上添加标记的顺序上。你应该首先创建地图对象,然后执行循环向其添加标记。嗯,我想你在这一点上是对的!我将用我的新代码更新我的第一篇文章,我将地图的创建移动到foreach循环上方。没有显示标记但在地图上:/可能错过了沿途的一些东西..仍然没有找到解决方案:(我曾多次尝试重构我的代码,因此它会输出一个添加了所有标记的代码片段。但它仍然只显示每个点的最后一个标记。有人吗?嗨,巴努,这肯定也是一种方法。但是,由于我在使用C#codebehind中的javascript ninja编码,似乎我在让代码正常工作时遇到了一些麻烦。):/以前从未在codebehind中真正使用javascript,请耐心等待。。