0

ユーザーの現在位置を取得し、Ajaxリクエストを介してphpファイルに送信するスクリプトがあります。このスクリプトは、データベースで近くの座標をチェックし、xml形式のマーカーを返します。このマーカーはGoogleマップに入力されます。私の問題は、そのajaxリクエストに基づいていくつかの表形式のデータを取得する必要があることです。これはGoogleマッププラグインには含まれません。実際の地図上のマーカーに関連するデータのように、地図の上に表示されます。問題は、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