Cómo consultar los límites de RouteBoxer usando XML (desde PHP / MySQL

Tengo una base de datos MySQL que convierto a XML sobre la marcha para consultar una página de RouteBoxer. Comencé todas estas páginas con ejemplos de Google. Entonces, para obtener mi XML, tengo:

    <?php  
require("phpsqlajax_dbinfo.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);

// Opens a connection to a mySQL server
$connection=mysql_connect ($hostname_DB2, $username_DB2, $password_DB2);
if (!$connection) {
  die("Not connected : " . mysql_error());
}

// Set the active mySQL database
$db_selected = mysql_select_db($database_DB2, $connection);
if (!$db_selected) {
  die ("Can\'t use db : " . mysql_error());
}

// Search the rows in the markers table
$query = sprintf("SELECT id, address, name, lat, lng, type 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)){
  $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("id", $row['id']);
}

echo $dom->saveXML();
?>

De manera similar, mi código de RouteBoxer se ve así:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google Maps JavaScript API Search Along a Route Example</title>
    <script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
    <script src="/Test/Domain/src/RouteBoxer.js" type="text/javascript"></script>
    <script type="text/javascript">

    var map = null;
    var boxpolys = null;
    var directions = null;
    var routeBoxer = null;
    var markers = [];
    var infoWindow;
    var locationSelect;
    var distance = null; // km

    function initialize() {
      // Default the map view to the UK.
      var mapOptions = {
        center: new google.maps.LatLng(54.219218, -2.905669),
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        zoom: 6
      };

      map = new google.maps.Map(document.getElementById("map"), mapOptions);
      routeBoxer = new RouteBoxer();

      directionService = new google.maps.DirectionsService();
      directionsRenderer = new google.maps.DirectionsRenderer({ map: map });      
    }

    function route() {
      // Clear any previous route boxes from the map
      clearBoxes();

      // Convert the distance to box around the route from miles to km
      distance = parseFloat(document.getElementById("distance").value) * 1.609344;

      var request = {
        origin: document.getElementById("from").value,
        destination: document.getElementById("to").value,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
      }

      // Make the directions request
      directionService.route(request, function(result, status) {
        if (status == google.maps.DirectionsStatus.OK) {
          directionsRenderer.setDirections(result);

          // Box around the overview path of the first route
          var path = result.routes[0].overview_path;
          var boxes = routeBoxer.box(path, distance);
          drawBoxes(boxes);
        } else {
          alert("Directions query failed: " + status);
        }
      });
    }

    // Draw the array of boxes as polylines on the map
    function drawBoxes(boxes) {
      boxpolys = new Array(boxes.length);
      for (var i = 0; i < boxes.length; i++) {
        boxpolys[i] = new google.maps.Rectangle({
          bounds: boxes[i],
          fillOpacity: 0,
          strokeOpacity: 1.0,
          strokeColor: '#000000',
          strokeWeight: 1,
          map: map
          //Perform Search
        });
      }
    }

    // Clear boxes currently on the map
    function clearBoxes() {
      if (boxpolys != null) {
        for (var i = 0; i < boxpolys.length; i++) {
          boxpolys[i].setMap(null);
        }
      }
      boxpolys = null;
    }
  </script>
  <style>
    #map {
      border: 1px solid black;
    }
  </style>
  </head>
  <body onload="initialize();">
    <div id="map" style="width: 800px; height: 600px;"></div>
    Box within at least <input type="text" id="distance" value="5" size="2">miles
    of the route from <input type="text" id="from" value="tacoma"/>
    to <input type="text" id="to" value="seattle"/>
    <input type="submit" onclick="route()"/>
  </body>
</html>

Entonces, ¿cómo hago para que mis artículos aparezcan dentro del routeboxer? ¿Cómo puedo enviar los límites del routeboxer al xml para consultar? O, mirándolo desde el otro lado, ¿cómo hago para que mi RouteBoxer consulte el XML y devuelva solo los elementos dentro de los límites?

¡Estoy muy confundido!

preguntado el 09 de marzo de 12 a las 17:03

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.