0

我有一个脚本获取用户的当前位置,通过 Ajax 请求将其发送到一个 php 文件,该请求使用数据库检查附近的坐标并返回一个 xml 格式的标记,然后将其填充到谷歌地图中。我的问题是我还需要根据该 ajax 请求获取一些表格数据,这些数据不会进入谷歌地图插件。它将出现在地图的顶部,就像实际地图上标记的相关数据一样。问题是我不知道如何创建 xml 表。

我真正想要做的是让我的 php 脚本生成一些 html 格式的表,然后通过我用于获取 xml 标记的相同 ajax 请求将这些表附加到我的 html 文件中。

PHP解析文件 -

 <?php
include("config.php");

// Get parameters from URL
$center_lat = $_GET["lat"];
$center_lng = $_GET["lng"];
$radius = $_GET["radius"];

// Start XML file, create parent node
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);



// Search the rows in the markers table
$query = sprintf("SELECT address, name, lat, lng, ( 3959 * acos( cos( radians('".$center_lat."') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('".$center_lng."') ) + sin( radians('".$center_lat."') ) * sin( radians( lat ) ) ) ) AS distance FROM venues HAVING distance < '".$radius."' ORDER BY distance LIMIT 0 , 20",
  mysqli_real_escape_string($mysqli, $center_lat),
  mysqli_real_escape_string($mysqli, $center_lng),
  mysqli_real_escape_string($mysqli, $center_lat),
  mysqli_real_escape_string($mysqli, $radius));
$result = mysqli_query($mysqli, $query);

$result = mysqli_query($mysqli, $query);
if (!$result) {
  die("Invalid query: " . mysqli_error($mysqli));
}


// Iterate through the rows, adding XML nodes for each
while ($row = @mysqli_fetch_assoc($result)){
  $node = $dom->createElement("marker");
  $newnode = $parnode->appendChild($node);
  $newnode->setAttribute("name", $row['name']);
  $newnode->setAttribute("address", $row['address']);
  $newnode->setAttribute("lat", $row['lat']);
  $newnode->setAttribute("lng", $row['lng']);
  $newnode->setAttribute("distance", $row['distance']);

}

echo $dom->saveXML();
?>

还有我的 Ajax 请求。

$(document).ready(function(){   
    var clientPosition ;
    $("#map_canvas").gmap().live("init", function(evt, map) {
        $("#map_canvas").gmap("getCurrentPosition", function(position, status) {
        if ( status === "OK" ) {
            var lat = position.coords.latitude;
            var lng = position.coords.longitude;
            var currentPositionMarker = "<marker name=\'Your Position\'     lat="+lat+" lng="+lng+"/>";
            var clientPosition = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
            $("#map_canvas").gmap("addMarker", {"position": clientPosition, "bounds": \'true\'});
            $.ajax({
                type:"GET",
                url: "someurl.php",           
                dataType: "xml",
                data:{
                    lat:lat,
                    lng:lng,
                    radius:250
                },
                success: function(data) {
                    var markers = (data).getElementsByTagName("marker");
                    $(currentPositionMarker).appendTo(markers);
                    var bounds = new google.maps.LatLngBounds();
                    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;
                        bounds.extend(point);   
                        displayMarker(name,point);
                        map.fitBounds(bounds);
                    };
                }
            });
            function displayMarker(title, point) {
                infowindow = new google.maps.InfoWindow;
                var marker = new google.maps.Marker({
                    map: map,
                    title: title,

                    position: point
                });
                google.maps.event.addListener(marker, "click", function() {
                    infowindow.setContent(title);
                    infowindow.open(map, marker);
                });
            }
        }
        });
    });
});

我知道这应该很简单,我查看了 PHP 文档并找到了一些相关的东西,但是当我实现它时,例如 $dom->loadHTML(); ajax 脚本停止工作,甚至不填充新的相关标记。

提前致谢!

4

0 回答 0