| 
<?phprequire_once('../mappoint/ClassLoader.php');
 session_start();
 
 ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <title>CalculateSimpleRoute</title>
 </head>
 <body>
 <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
 <table border="1">
 <tr>
 <td colspan="2"><b>Route with Map and Directions</b></td>
 </tr>
 <tr>
 <td>Data source: </td>
 <td>
 <select name="dataSource" id="dataSource">
 <option value="MapPoint.EU">MapPoint.EU</option>
 <option value="MapPoint.NA">MapPoint.NA</option>
 <option value="MapPoint.BR">MapPoint.BR</option>
 </select>
 </td>
 </tr>
 <tr>
 <td colspan="2"><b>Start Address</b></td>
 </tr>
 <tr>
 <td>Street Address:</td>
 <td><input type="text" name="startAddress" id="startAddress" /></td>
 </tr>
 <tr>
 <td>City:</td>
 <td><input type="text" name="startCity" id="startCity" /></td>
 </tr>
 <tr>
 <td>Secondary city:</td>
 <td><input type="text" name="startSCity" id="startSCity" /></td>
 </tr>
 <tr>
 <td>Subdivision:</td>
 <td><input type="text" name="startSubdivision" id="startSubdivision" /></td>
 </tr>
 <tr>
 <td>Postal code:</td>
 <td><input type="text" name="startPostalCode" id="startPostalCode" /></td>
 </tr>
 <tr>
 <td>Country or region:</td>
 <td><input type="text" name="startCountry" id="startCountry" /> </td>
 </tr>
 <tr>
 <td colspan="2"><b>End Address</b></td>
 </tr>
 <tr>
 <td>Street Address:</td>
 <td><input type="text" name="endAddress" id="endAddress" /></td>
 </tr>
 <tr>
 <td>City:</td>
 <td><input type="text" name="endCity" id="endCity" /></td>
 </tr>
 <tr>
 <td>Secondary city:</td>
 <td><input type="text" name="endSCity" id="endSCity" /></td>
 </tr>
 <tr>
 <td>Subdivision:</td>
 <td><input type="text" name="endSubdivision" id="endSubdivision" /></td>
 </tr>
 <tr>
 <td>Postal code:</td>
 <td><input type="text" name="endPostalCode" id="endPostalCode" /></td>
 </tr>
 <tr>
 <td>Country or region:</td>
 <td><input type="text" name="endCountry" id="endCountry" /> </td>
 </tr>
 <tr>
 <td><b>Choose a language:</b></td>
 <td>
 <select name="language" id="language">
 <option value="nl">Dutch</option>
 <option value="en">English</option>
 <option value="en-US">English-USA</option>
 <option value="fr">French</option>
 <option value="de">German</option>
 <option value="it">Italian</option>
 <option value="js">Japanese</option>
 <option value="pt" selected="selected">Portuguese :)</option> <!-- VIVA PORTUGAL !!! -->
 <option value="es">Spanish</option>
 <option value="sv">Swedish</option>
 </select>
 </td>
 </tr>
 <tr>
 <td><b>Segment preference:</b></td>
 <td>
 <input type="radio" name="segment" id="quick" value="<?php echo SegmentPreference::$Quickest; ?>" checked="checked" />Quickest  
 <input type="radio" name="segment" id="short" value="<?php echo SegmentPreference::$Shortest; ?>" />Shortest
 </td>
 </tr>
 <tr>
 <td colspan="2" style="text-align:center"><input type="submit" name="getRoute" id="getRoute" value="Get route"></td>
 </tr>
 </table>
 </form>
 <?php
 
 if (isset($_POST['getRoute'])) {
 /*This code is a translation of the Route sample of the Mappoint Documention.
 I'd recommend you to check the sample and compare it with this one.*/
 $global = $_SESSION['mappoint'];
 $myAddressPointA = new Address();
 $myAddressPointA->AddressLine = $_POST['startAddress'];
 $myAddressPointA->PrimaryCity = $_POST['startCity'];
 $myAddressPointA->SecondaryCity = $_POST['startSCity'];
 $myAddressPointA->Subdivision = $_POST['startSubdivision'];
 $myAddressPointA->PostalCode = $_POST['startPostalCode'];
 $myAddressPointA->CountryRegion = strtoupper($_POST['startCountry']);
 
 $findAddressSpecA = new FindAddressSpecification();
 $findAddressSpecA->InputAddress = $myAddressPointA;
 $findAddressSpecA->DataSourceName = $_POST['dataSource'];
 
 $global->FindService->UserInfoHeaderValue = new UserInfoHeader();
 $cult = new CultureInfo();
 $cult->Lcid = $_POST['language'];
 $cult->Name = 'pt';
 $global->FindService->UserInfoHeaderValue->Culture = $cult;
 $myFindResultsPointA = null;
 try {
 $myFindResultsPointA = $global->FindService->FindAddress($findAddressSpecA);
 } catch (SoapFault $e) {
 die($e->faultstring);
 }
 
 $myAddressPointB = new Address();
 $myAddressPointB->AddressLine = $_POST['endAddress'];
 $myAddressPointB->PrimaryCity = $_POST['endCity'];
 $myAddressPointB->SecondaryCity = $_POST['endSCity'];
 $myAddressPointB->Subdivision = $_POST['endSubdivision'];
 $myAddressPointB->PostalCode = $_POST['endPostalCode'];
 $myAddressPointB->CountryRegion = strtoupper($_POST['endCountry']);
 
 $findAddressSpecB = new FindAddressSpecification();
 $findAddressSpecB->InputAddress = $myAddressPointB;
 $findAddressSpecB->DataSourceName = $_POST['dataSource'];
 
 $myFindResultsPointB = null;
 try {
 $myFindResultsPointB = $global->FindService->FindAddress($findAddressSpecB);
 } catch (SoapFault $e) {
 die($e->faultstring);
 }
 if ($myFindResultsPointA->NumberFound == 0 || $myFindResultsPointB->NumberFound == 0) {
 echo "<br />No results found.";
 } else {
 $myWaypoints = array();
 //NOTE: FindResult can be either an array or an object.
 //This code might produce errors because of that.
 $myWaypoints[] = $myFindResultsPointA->Results->FindResult->FoundLocation->LatLong;
 $myWaypoints[] = $myFindResultsPointB->Results->FindResult->FoundLocation->LatLong;
 
 $myRoute = null;
 try {
 //set locale
 $global->RouteService->UserInfoHeaderValue = new UserInfoHeader();
 $cult = new CultureInfo();
 $cult->Name = $_POST['language'];
 $global->RouteService->UserInfoHeaderValue->Culture = $cult;
 
 $myRoute = $global->RouteService->CalculateSimpleRoute($myWaypoints, $_POST['dataSource'], $_POST['segment']);
 echo "<br /><select name='direction' id='direction' multiple='multiple' size='10' style='width:320px'>";
 foreach ($myRoute->Itinerary->Segments->Segment as $segment) {
 foreach ($segment->Directions->Direction as $direction) {
 $strItemText = '';
 if ($direction != null && $direction instanceof Direction) {
 $strItemText .= $direction->Instruction . " ";
 $strItemText .= "(Distance: " . round($direction->Distance, 2) . " km; ";
 $strItemText .= "Duration: " . round($direction->Duration/60, 2) . " minutes)";
 }
 echo "<option value='$strItemText'>$strItemText</option>";
 }
 }
 echo "</select><br />";
 $myPushPins = array();
 $pp1 = new Pushpin();
 $pp1->PinID = "pin0";
 $pp1->Label = "Start";
 $pp1->IconName = "31";
 $pp1->IconDataSource = "MapPoint.Icons";
 $pp1->LatLong = $myWaypoints[0];
 $myPushPins[] = $pp1;
 
 $pp2 = new Pushpin();
 $pp2->PinID = "pin1";
 $pp2->Label = "End";
 $pp2->IconName = "29";
 $pp2->IconDataSource = "MapPoint.Icons";
 $pp2->LatLong = $myWaypoints[1];
 $myPushPins[] = $pp2;
 
 $myMapOptions = new MapOptions();
 $myMapOptions->ReturnType = MapReturnType::$ReturnUrl;
 $myMapOptions->Format = new ImageFormat();
 $myMapOptions->Format->Height = 500;
 $myMapOptions->Format->Width = 500;
 
 //a new instance of the view MUST be created, because SoapClient uncapable of mapping the MapView class descendants
 $myMapView = new ViewByBoundingRectangle();
 $myMapView->BoundingRectangle->Southwest = $myRoute->Itinerary->View->ByBoundingRectangle->BoundingRectangle->Southwest;
 $myMapView->BoundingRectangle->Northeast = $myRoute->Itinerary->View->ByBoundingRectangle->BoundingRectangle->Northeast;
 //$myMapView = $myRoute->Itinerary->View->ByBoundingRectangle;
 
 $mapSpec = new MapSpecification();
 $mapSpec->Views = array($myMapView);
 $mapSpec->Options = $myMapOptions;
 $mapSpec->DataSourceName = $_POST['dataSource'];
 $mapSpec->Pushpins = $myPushPins;
 $mapSpec->Route = $myRoute;
 
 $mapImage = $global->RenderService->GetMap($mapSpec);
 
 
 echo "<img src='$mapImage->Url' />";
 } catch (SoapFault $e) {
 die($e->faultstring);
 }
 }
 }
 ?>
 </body>
 </html>
 |