1

I have a MySQL db that I convert to XML on the fly for querying a RouteBoxer page. I began all of these pages from Google examples. So, in order to get my XML, I have:

    <?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();
?>

Similarly, my RouteBoxer code looks like this:

    <!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>

So how do I get my items to apepar within the routeboxer? How can I send the bounds of the routeboxer to the xml to query? Or, looking at it from the other way around, how do i get my RouteBoxer to query the XML and return only the items within the bounds?

I'm very confused!

user1259798
  • 171
  • 1
  • 16

0 Answers0