【问题标题】:How can I add a anchor tag in xml data passed to javascript for google maps api如何在传递给 google 地图 api 的 javascript 的 xml 数据中添加锚标记
【发布时间】:2018-02-19 19:58:52
【问题描述】:

我正在使用 google maps api,我正在从 data.php 中提取标记数据 -

<?php
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<markers>
<?php
$sql = "SELECT * FROM locations";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
      $id = $row['id'];
      $lat = $row['lat'];
      $lng = $row['lng'];
      $name= $row['name'];
      $address = $row['address'];

      echo "<marker id='".$id."' name='<a href='site.php'>'".$name."'</a>' address='".$address."' lat='".$lat."' lng='".$lng."' type='X'/>";
}
}
?>
</markers>

在 main.php 文件中,我从 data.php 加载地图和标记 -

 downloadUrl('data.php', function(data) {
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName('marker');
        Array.prototype.forEach.call(markers, function(markerElem) {
          var id = markerElem.getAttribute('id');
          var name = markerElem.getAttribute('name');
          var address = markerElem.getAttribute('address');
          var type = markerElem.getAttribute('type');
          var point = new google.maps.LatLng(
              parseFloat(markerElem.getAttribute('lat')),
              parseFloat(markerElem.getAttribute('lng')));

          var infowincontent = document.createElement('div');
          var strong = document.createElement('strong');
          strong.textContent = name
          infowincontent.appendChild(strong);
          infowincontent.appendChild(document.createElement('br'));

          var text = document.createElement('text');
          text.textContent = address
          infowincontent.appendChild(text);
          var icon = customLabel[type] || {};
          var marker = new google.maps.Marker({
            map: map,
            position: point,
            label: icon.label
          });
          marker.addListener('click', function() {
            infoWindow.setContent(infowincontent);
            infoWindow.open(map, marker);
          });
        });
      });
    }

当我添加锚标记时,它不再加载标记我无法读取 null 的属性“documentElement”,我该怎么做才能在此处传递锚标记?

【问题讨论】:

  • 我强烈建议您使用DOMDocument 来生成 XML,而不是使用字符串手动生成 - 或者取消 XML 并使用 json,因为它更轻且更容易处理客户端。我认为问题在于在字符串中使用单引号并且缺少转义。当然,在您需要编写的代码中使用 DOMDocument 会更加冗长,但是当简单地滥用引号导致上述代码无效时,它应该足够健壮以生成有效的 XML。
  • 我可以告诉你的一件事是你的回声线是错误的。您回显的name 属性无效。您不能以单引号开始属性,然后在该属性中嵌入单引号而不转义内部单引号。

标签: javascript php xml google-maps


【解决方案1】:

我改变了我的方法,将xml数据中的链接添加到js脚本中

          var a = document.createElement('a');
          var linkText = document.createTextNode(name);
          a.appendChild(linkText);
          a.title = name;
          a.href = "http://example?id=" + name;
          infowincontent.appendChild(a);

【讨论】:

    猜你喜欢
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    相关资源
    最近更新 更多