简体   繁体   English

JavaScript Google地图标记错误

[英]JavaScript Google map marker bug

I'm currently working on an ASP.NET project where I'm using the Google Maps API to show a marker for every company that's registrated in the database. 目前,我正在一个ASP.NET项目中,我正在使用Google Maps API为数据库中注册的每个公司显示一个标记。

Everything works just fine, but when I click on a marker the tooltip/dialogbox for the last company in my company list always shows up and not the actualy company mark that's been clicked on. 一切正常,但是当我单击标记时,总是会显示公司列表中最后一个公司的工具提示/对话框,而不是实际单击的公司标记。

I can't really get my head around why it is always the last marker that shows up. 我真的无法理解为什么它始终是最后出现的标记。 Here's my updated code: 这是我更新的代码:

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>";
        }

If any of you out there can spot the reason why, I would be happy to hear from you! 如果你们当中有人能找出原因,我很高兴收到您的来信! Any help/hint is appreciated :-) 任何帮助/提示表示赞赏:-)

All the best, 祝一切顺利,

Bo

try this 尝试这个

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;
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM