<?php 
require_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>
 
 |