JS代码
function getXML() {
//获得四角坐标
var maxX = map.getBounds().getNorthEast().lng();
var maxY = map.getBounds().getNorthEast().lat();
var minX = map.getBounds().getSouthWest().lng();
var minY = map.getBounds().getSouthWest().lat();
var infoWindow = new google.maps.InfoWindow;
downloadUrl("php/phpsqlajax_genxml.php?type=0&maxX=" + maxX + "&maxY=" + maxY + "&minX=" + minX + "&minY=" + minY,
function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var id = markers[i].getAttribute("id");
var name = markers[i].getAttribute("name");
var address = markers[i].getAttribute("address");
var tel = markers[i].getAttribute("tel");
var lat = markers[i].getAttribute("lat");
var lng = markers[i].getAttribute("lng");
var point = new google.maps.LatLng(lat, 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
});
bindInfoWindow(marker, map, infoWindow, html);
markersArray.push(marker);
}
});
}
}
PHP代码
<?php
require("phpsqlajax_dbinfo.php");
require("common.php");
$type = $_GET['type'];
$maxX = $_GET['maxX'];
$maxY = $_GET['maxY'];
$minX = $_GET['minX'];
$minY = $_GET['minY'];
function parseToXML($htmlStr)
{
$xmlStr=str_replace('<','<',$htmlStr);
$xmlStr=str_replace('>','>',$xmlStr);
$xmlStr=str_replace('"','"',$xmlStr);
$xmlStr=str_replace("'",''',$xmlStr);
$xmlStr=str_replace("&",'&',$xmlStr);
return $xmlStr;
}
// 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
$result = mysql_query("set names 'utf8'");
//$query = "SELECT id,name,address,tel,lat,lng,class,tranfic,substr(remark,30) FROM markers WHERE lng >= ".$minX." and lng <=".$maxX." and lat >= ".$minY." and lat <=".$maxY." order by id";
$condition=' and markers.class=2';//钓点
if($type==0){
$condition=' and markers.class<2';//钓场和商点
}
$query = "SELECT
markers.id,
markers.name,
markers.address,
markers.tel,
markers.lat,
markers.lng,
markers.class,
markers.fee,
markers.tranfic,
markers.rate,
substr(markers.remark,1,56) as remark,
markers.create_user,
markers.create_date,
count(comments.marker_id) as amount
FROM
markers
left Join comments ON comments.marker_id = markers.id
WHERE lng >= ".$minX." and lng <=".$maxX." and lat >= ".$minY." and lat <=".$maxY." " .$condition. "
group by
markers.id,
markers.name,
markers.address,
markers.lat,
markers.lng,
markers.class,
markers.fee,
markers.tranfic,
markers.rate,
markers.remark,
markers.create_user,
markers.create_date
order by markers.id";
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
header("Content-type: text/xml; charset=utf-8");
// Start XML file, echo parent node
echo '<markers>';
// Iterate through the rows, printing XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
$pic = get_first_filename($row['id']);
if($pic==""){
$pic="images/nophoto.gif";
}else{
$pic="albums/" . $pic;
}
echo '<marker ';
echo 'id="' . $row['id'] . '" ';
echo 'name="' . parseToXML($row['name']) . '" ';
echo 'address="' . parseToXML($row['address']) . '" ';
echo 'tel="' . $row['tel'] . '" ';
echo 'lat="' . $row['lat'] . '" ';
echo 'lng="' . $row['lng'] . '" ';
echo 'type="' . $row['class'] . '" ';
echo 'fee="' . $row['fee'] . '" ';
echo 'tranfic="' . $row['tranfic'] . '" ';
echo 'remark="' . parseToXML($row['remark']) . '" ';
echo 'amount="' . $row['amount'] . '" ';
echo 'rate="' . $row['rate'] . '" ';
echo 'user="' . $row['create_user'] . '" ';
echo 'pic="' . $pic. '" ';
echo '/>';
}
// End XML file
echo '</markers>';
?>