javascript - Google Maps API V3 标记无法通过 XML 运行

标签 javascript google-maps

我很难通过 Google Maps V3 API 显示我的标记。

加载页面时出现以下错误 -

类型错误:xml 为空 var 标记 = xml.documentElement.getElementsByTagName("marker");

function load() {
    var map = new google.maps.Map(document.getElementById("map"), {
        center: new google.maps.LatLng(47.6145, -122.3418),
        zoom: 13,
        mapTypeId: 'roadmap'
    });
    var infoWindow = new google.maps.InfoWindow;

    // Change this depending on the name of your PHP file
    downloadUrl("phpsqlajax_genxml.php", function (data) {
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
            var name = markers[i].getAttribute("name");
            var address = markers[i].getAttribute("address");
            var type = markers[i].getAttribute("type");
            var point = new google.maps.LatLng(
            parseFloat(markers[i].getAttribute("lat")),
            parseFloat(markers[i].getAttribute("lng")));
            var html = "<b>" + name + "</b> <br/>" + address;
            var icon = customIcons[type] || {};
            var marker = new google.maps.Marker({
                map: map,
                position: point,
                icon: icon.icon,
                shadow: icon.shadow
            });
            bindInfoWindow(marker, map, infoWindow, html);
        }
    });
}

function bindInfoWindow(marker, map, infoWindow, html) {
    google.maps.event.addListener(marker, 'click', function () {
        infoWindow.setContent(html);
        infoWindow.open(map, marker);
    });
}

function downloadUrl(url, callback) {
    var request = window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest;

    request.onreadystatechange = function () {
        if (request.readyState == 4) {
            request.onreadystatechange = doNothing;
            callback(request, request.status);
        }
    };
    request.open('GET', url, true);
    request.send(null);
}


function doNothing() {}

phpsqlajax_genxml.php

 <?php
$username="root";
 $password="";
 $database="cake";
  // Start XML file, create parent node
  $doc = domxml_new_doc("1.0");
   $node = $doc->create_element("markers");
  $parnode = $doc->append_child($node);

  // Opens a connection to a mySQL server
 $connection=mysql_connect (localhost, $username, $password);
  if (!$connection) {
die('Not connected : ' . mysql_error());
 }

   // Set the active mySQL database
  $db_selected = mysql_select_db($database, $connection);
  if (!$db_selected) {
   die ('Can\'t use db : ' . mysql_error());
  }

    // Select all the rows in the markers table
   $query = "SELECT * FROM markers";
   $result = mysql_query($query);
    if (!$result) {
    die('Invalid query: ' . mysql_error());
  }

    header("Content-type: text/xml");

     // Iterate through the rows, adding XML nodes for each
   while ($row = @mysql_fetch_assoc($result)){
     // ADD TO XML DOCUMENT NODE
     $node = $doc->create_element("marker");
  $newnode = $parnode->append_child($node);

    $newnode->set_attribute("name", $row['name']);
     $newnode->set_attribute("address", $row['address']);
    $newnode->set_attribute("lat", $row['lat']);
    $newnode->set_attribute("lng", $row['lng']);
     $newnode->set_attribute("type", $row['type']);
   }

   $xmlfile = $doc->dump_mem();
   echo $xmlfile;

   ?>

最佳答案

phpsqlajax_genxml.php 正在生成无效的 XML(无法从 PHP 中看出原因)。将您的浏览器指向它,它应该通知您错误或无效的 XML。

关于javascript - Google Maps API V3 标记无法通过 XML 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16367817/

相关文章:

android - Google map - 无法使用 animateCamera 同时缩放和移动,但可以使用 moveCamera

javascript - jquery如何获取唯一选择器

javascript - 如何实现模块化细节-老版本KendoUI Grid模板

android - 从后台恢复后,Flutter GoogleMap 为空白

javascript - GMarker onmouseout 事件触发得太快

javascript - 我如何将 addListener 添加到 GOOGLE MAPS 以获取 MapType

javascript - 模拟元素的点击

Javascript:将参数传递给内部 setTimeOut 函数?

javascript - 访问使用 Object.create 创建的 JavaScript 属性的 get/set 方法

javascript - Bootstrap 单选按钮切换问题