【问题标题】:Google Maps API V3 Marker not working from XMLGoogle Maps API V3 标记不能从 XML 工作
【发布时间】:2013-05-03 21:30:03
【问题描述】:

我很难使用 Google Maps V3 API 显示我的标记。

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

类型错误:xml 为空 var marker = 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;

   ?>

【问题讨论】:

  • alert(data.responseXML) 给了什么?
  • 抱歉 karthikr 请再次查看我的错误,我已编辑它
  • phpsqlajax_genxml.php的响应在这里很重要回答这个问题
  • 我已附上该文件,请看一下
  • 非常感谢任何帮助

标签: javascript google-maps


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2011-09-05
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多