ユーザーの現在位置を取得し、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スクリプトは機能を停止し、新しい関連マーカーにデータを入力しません。
前もって感謝します!