javascript - map 图标仅显示我的信息窗口的第一个字符

标签 javascript c# google-maps

我正在通过 aspx 底层代码将一串纬度/经度传递给我的 javascript。 map 显示正确,但当您单击图钉时,它仅显示图钉的第一个字符。

这是我的 C# 代码:

public string sdata;
protected void Page_Load(object sender, EventArgs e)
{
  sdata = "Fred,26.2486591339111,-80.2002334594727|Tom,26.2344417572021,-80.1393356323242|Paul,26.0818271636963,-80.2083358764648|John,26.2701854705811,-80.1152496337891|Eric,26.2009468078613,-80.1440734863281";
}

任何我的 JavaScript:

  var data2 = '<%=sdata%>'.toString();
  var locations = data2.split('|');

  var loc = locations[0].split(",");
  var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 10,
      center: new google.maps.LatLng(loc[1],loc[2]),
      mapTypeId: google.maps.MapTypeId.ROADMAP
  });

  var infowindow = new google.maps.InfoWindow();

  var marker, i;

  var pinColor = "#";
  for (k = 0; k < 3; k++) {
      pinColor += ("0" + (Math.random() * 256 | 0).toString(16)).substr(-2);
  }

  var pinImage = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|" + "#0000ff",
              new google.maps.Size(21, 34),
              new google.maps.Point(0, 0),
              new google.maps.Point(10, 34));
  var pinShadow = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_shadow",
              new google.maps.Size(40, 37),
              new google.maps.Point(0, 0),
              new google.maps.Point(12, 35));

  for (i = 0; i < locations.length; i++) {
      var loc = locations[i].split(",");
      marker = new google.maps.Marker({
          position: new google.maps.LatLng(loc[1], loc[2]),
          //icon: pinImage,
          //shadow: pinShadow,
          map: map
      });

      google.maps.event.addListener(marker, 'click', (function (marker, i) {
          return function () {
              infowindow.setContent(locations[i][0]);
              infowindow.open(map, marker);
          }
      })(marker, i));
  }

我的分割似乎工作正常:

enter image description here

这是我点击图钉时看到的内容:

enter image description here

我认为问题出在 addListener(?) 中,但我对 javascript 和谷歌地图不熟悉。

大家有什么建议吗?

最佳答案

更新:进行澄清

您的问题是,您在处理程序的 for 循环中进行了逗号分割,但随后在拉取第一个元素时引用了未分割的版本 - 因此您将获得字符串的第一个元素

"Fred,26.2486591339111,-80.2002334594727"

"F"

您需要引用在循环开始时拆分的 loc 数组。

更改行:

google.maps.event.addListener(marker, 'click', (function (marker, i) {
    return function () {
        infowindow.setContent(locations[i][0]);
        infowindow.open(map, marker);
    }
})(marker, i));

致:

google.maps.event.addListener(marker, 'click', (function (marker, loc) {
    return function () {
        infowindow.setContent(loc[0]);
        infowindow.open(map, marker);
    }
})(marker, loc));

为了获得:

"Fred"

关于javascript - map 图标仅显示我的信息窗口的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36065880/

相关文章:

javascript - 如何将对象传播到 JavaScript 中的类属性中

javascript - 如何将 var myKey = "keyP"映射到 functionP.myKey

javascript - 使用 jQuery $.post 返回的数组

c# - 数据访问层中的静态方法

javascript - 如何在 map 上添加数百个标记而不出现滞后?

javascript - 谷歌地图信息窗口使用关闭图标并删除箭头

javascript - 谷歌地图API自动完成显示位置的 map 预览

javascript - 无法理解nodejs代码

c# - 通过rest上传json字符串时出现403(c#)

c# - StyleCop 警告 SA1126 :PrefixCallsCorrectly on name of class