/**
The xml should be
<Address>
<Value></Value>
<Info></Info>
<Stops>
<Stop>
<Name></Name>
<Latitude></Latitude>
<Longitude></Longitude>
<Distance></Distance>
<Buses></Buses>
</Stop>
.
.
</Stops>
<Result>
<BusStop></BusStop>
<BusStopLatitude></BusStopLatitude>
<BusStopLongitude></BusStopLongitude>
<Offset></Offset>
</Result>
</Address>
 **/
function getStopForAddress($addr, $log, $mediaType)
{
    //echo $addr;
    $stopDataString = '';
    $originalRequestedLatitude = 0;
    $originalRequestedLongitude = 0;
    // create a xml string
    $stopXMLString = '<Address>';
    $query = "Select StopName, Latitude, Longitude from Stops Where StopName = '" . $addr . "'";
    $result = mysql_query($query);
    $rowsnum = mysql_num_rows($result);
    //find from the stop table..more than one stop found
    //	if($rowsnum>1)
    //	{
    //		if($DEBUG)
    //			echo "more than one stops are found with your search criteria <br/>";
    //		$log->LogDebug("[".$mediaType."] The address ".$addr." matches more than one in stops table. taking the first one ");
    //		$stopXMLString=$stopXMLString."<Info>More than one stops are found with your search criteria</Info>";
    //		$stopXMLString=$stopXMLString."<ErrorCode>MS</ErrorCode>";
    //		$stopXMLString=$stopXMLString."<Stops>";
    //		// this is the case wehre we can check which is the best choice in terms of buses coming thourgh..E.g. Marathahalli
    //		$maxBus=0;
    //		for($i=0;$i<$rowsnum;$i++)
    //		{
    //			$row=mysql_fetch_row($result);
    //			$stopXMLString=$stopXMLString."<Stop>";
    //		   if($DEBUG)
    //			 echo $row[0]."<br/>";
    //
    //			$stopXMLString=$stopXMLString."<Name>".htmlentities($row[0])."</Name>";
    //			$stopXMLString=$stopXMLString."<Latitude>".$row[1]."</Latitude>";
    //			$stopXMLString=$stopXMLString."<Longitude>".$row[2]."</Longitude>";
    //			$stopXMLString=$stopXMLString."<Distance>-1</Distance>";
    //			$stopXMLString=$stopXMLString."<Buses>".getBusesForStop($row[0])."</Buses>";
    //
    //			// $stopDetails=$row[0];
    //			//$map->addMarkerByCoords($row[2],$row[1],$row[0],getBusesForStop($row[0]),'');
    //			$NumberOfBus=getNumberOfBusesForStop($row[0]);
    //			if($NumberOfBus>$maxBus)
    //			{
    //				$maxBus=$NumberOfBus;
    //				$stopDataString=$row[0].":".$row[1].":".$row[2].":0";
    //			}
    //			$stopXMLString=$stopXMLString."</Stop>";
    //		}
    //		$stopXMLString=$stopXMLString."</Stops>";
    //	}
    //	else //only one stop is found
    // if the stop is found
    if ($rowsnum == 1) {
        $stopXMLString = $stopXMLString . "<Info>Your address matches the correct stop name</Info>";
        $stopXMLString = $stopXMLString . "<ErrorCode>OS</ErrorCode>";
        $stopXMLString = $stopXMLString . "<Stops>";
        $stopXMLString = $stopXMLString . "<Stop>";
        $row = mysql_fetch_row($result);
        //        if($DEBUG)
        //            echo " Your stop is ".$row[0]."<br/>";
        $log->LogDebug("[" . $mediaType . "] The address " . $addr . " is a valid stopname ");
        $stopXMLString = $stopXMLString . "<Name>" . htmlentities($row[0]) . "</Name>";
        $stopXMLString = $stopXMLString . "<Latitude>" . $row[1] . "</Latitude>";
        $stopXMLString = $stopXMLString . "<Longitude>" . $row[2] . "</Longitude>";
        $stopXMLString = $stopXMLString . "<Distance>-1</Distance>";
        $stopXMLString = $stopXMLString . "<Buses>" . getBusesForStop($row[0]) . "</Buses>";
        $stopXMLString = $stopXMLString . "</Stop>";
        // $map->addMarkerByCoords($row[2],$row[1],$row[0],getBusesForStop($row[0]),'');
        $stopDataString = $row[0] . ":" . $row[1] . ":" . $row[2] . ":0";
        $stopXMLString = $stopXMLString . "</Stops>";
    } else {
        //no stop found..user must have entered some free string
        if ($rowsnum == 0) {
            //First check in the road database if the address meets
            //echo "going to the roads database"."<br/>";
            // Checking in the road database
            $query = "Select * from newRoadAddresses Where Address ='" . $addr . "'";
            $result = mysql_query($query);
            $rowsnum = mysql_num_rows($result);
            //the address was not found in the road database so get it from internet
            if ($rowsnum == 0) {
                //                if($DEBUG)
                //                    echo "The address not found in the database so fetching from internet <br/>";
                //$stopXMLString=$stopXMLString."<Info>The address ".$addr." not found in the database so fetching from internet</Info>";
                $logString = "[" . $mediaType . "] The address " . $addr . " not found in the database so fetching from internet ";
                //$log->LogDebug("[".$mediaType."] The address ".$addr." not found in the database so fetching from internet ");
                // fimd from the net
                $addressString = "http://maps.google.com/maps/api/geocode/json?address=" . urlencode($addr) . ",+Bangalore,+Karnataka,+India&sensor=false";
                $geocode = file_get_contents($addressString);
                $formattedAddress = return_between($geocode, "formatted_address", "\",", EXCL);
                $formattedAddressNoiseRemoved = return_between($formattedAddress, ":", "India", INCL);
                $place = substr($formattedAddressNoiseRemoved, 3);
                //echo $place."<br/>";
                //exit(0);
                ///echo $place."<br/>";
                //$arr=array();
                $arr = explode(",", $place);
                //the address was not at all valid
                if (strcmp(trim($arr[0]), "Bangalore") == 0 && strcmp(trim($arr[1]), "Karnataka") == 0 && strcmp(trim($arr[2]), "India") == 0) {
                    $log->LogDebug($logString . ". Invalid Address provided ");
                    $stopXMLString = $stopXMLString . "<Info>Address is not valid. Try giving some locality name</Info>";
                    $stopXMLString = $stopXMLString . "<ErrorCode>AM</ErrorCode>";
                    $stopXMLString = $stopXMLString . "<Stops>";
                    $stopXMLString = $stopXMLString . "<Stop>";
                    $stopXMLString = $stopXMLString . "</Stop>";
                    $stopXMLString = $stopXMLString . "</Stops>";
                    //                    if($DEBUG)
                    //                        echo "<h3>".trim($addr)."  Address is not valid"."</h3><br/>";
                    $stopDataString = "0:0:0:0";
                } else {
                    $locations = return_between($geocode, "location", "}", EXCL);
                    //echo $locations;
                    $latitude = return_between($locations, "lat\"", ",", EXCL);
                    $latitude = substr($latitude, 3);
                    //echo $latitude;
                    list($lat, $long) = explode(",", $locations);
                    list($cap, $val) = explode(":", $long);
                    //echo trim($val);
                    $addrLat = trim($latitude);
                    $addrLong = trim($val);
                    $originalRequestedLatitude = $addrLat;
                    $originalRequestedLongitude = $addrLong;
                    // add the marker for the searched address
                    //$map->addMarkerIcon("marker_star.png","marker_shadow.png",15,29,15,3);
                    //$map->addMarkerByCoords($addrLong,$addrLat,$addr,'','');
                    //Now check that we have any stop that is within 1 km of the stop.
                    //we need to use the direct method to calculate the distance
                    // we could have used the heversine formaula also but this is OK
                    $query = "SELECT  StopName, Latitude, Longitude FROM Stops WHERE (Latitude - " . $addrLat . " < .009) AND (Latitude - " . $addrLat . " > - .009) AND (Longitude - " . $addrLong . " > - .009) AND (Longitude - " . $addrLong . " < 0.009)";
                    //echo $query."<br/>";
                    $result = mysql_query($query);
                    $rowsnum = mysql_num_rows($result);
                    //we could not find any stops near to this address.
                    if ($rowsnum == 0) {
                        // this is the case when you gave an address that even could not be found usign the internet search
                        $log->LogDebug($logString . ". No Stops nearby");
                        $stopXMLString = $stopXMLString . "<Info>Sorry we could not find any stops nearby</Info>";
                        $stopXMLString = $stopXMLString . "<ErrorCode>AM</ErrorCode>";
                        $stopXMLString = $stopXMLString . "<Stops>";
                        $stopXMLString = $stopXMLString . "<Stop>";
                        $stopXMLString = $stopXMLString . "</Stop>";
                        $stopXMLString = $stopXMLString . "</Stops>";
                        //                        if($DEBUG)
                        //                            echo "<h3>".trim($addr)."  Address is not valid"."</h3><br/>";
                        $stopDataString = "0:0:0:0";
                    } else {
                        $arrBusStops = array();
                        for ($i = 0; $i < $rowsnum; $i++) {
                            $row = mysql_fetch_row($result);
                            //echo $row[0];
                            $dist = distance($addrLat, $addrLong, $row[1], $row[2], "K");
                            $BDS = new BusDataStructure($row[0], $row[1], $row[2], $dist);
                            array_push($arrBusStops, $BDS);
                            //echo distance($addrLat, $addrLong, $row[1],$row[2], "K") . " kilometers<br>";
                            //$map->addMarkerByCoords($row[2],$row[1],$row[0].distance($addrLat, $addrLong, $row[1],$row[2], "K"),'','');
                        }
                        // now do the comparison of the data
                        //sort the stops in the order of some preference
                        $tempSortedArray = BubbleSort($arrBusStops, $rowsnum);
                        // this is the place to do One more level of filtering based on the number of buses
                        $sortedArray = applyFilterForAddress($tempSortedArray);
                        //print_r($sortedArray);
                        $log->LogDebug($logString . ". Valid Address found via internet");
                        $stopXMLString = $stopXMLString . "<Info>Address Found via Internet</Info>";
                        $formattedPlace = preg_replace('/Bangalore, Karnataka, India$/', '', $place);
                        $formattedPlaceRemovingTrailingComma = rtrim(trim($formattedPlace), ",");
                        $stopXMLString = $stopXMLString . "<InternetAddress>" . $formattedPlaceRemovingTrailingComma . "</InternetAddress>";
                        $stopXMLString = $stopXMLString . "<ErrorCode>IA</ErrorCode>";
                        $stopXMLString = $stopXMLString . "<Stops>";
                        for ($i = 0; $i < sizeof($sortedArray); $i++) {
                            //echo $sortedArray[$i]->getStopName().$sortedArray[$i]->getDistance()."<br/>";
                            $stopXMLString = $stopXMLString . "<Stop>";
                            //$map->addMarkerByCoords($sortedArray[$i]->getLongitude(),$sortedArray[$i]->getLatitude(),$sortedArray[$i]->getStopName().$sortedArray[$i]->getDistance(),getBusesForStop($sortedArray[$i]->getStopName()),'');
                            $stopXMLString = $stopXMLString . "<Name>" . htmlentities($sortedArray[$i]->getStopName()) . "</Name>";
                            $stopXMLString = $stopXMLString . "<Latitude>" . $sortedArray[$i]->getLatitude() . "</Latitude>";
                            $stopXMLString = $stopXMLString . "<Longitude>" . $sortedArray[$i]->getLongitude() . "</Longitude>";
                            $stopXMLString = $stopXMLString . "<Distance>" . $sortedArray[$i]->getDistance() . "</Distance>";
                            $stopXMLString = $stopXMLString . "<Buses>" . getBusesForStop($sortedArray[$i]->getStopName()) . "</Buses>";
                            $stopXMLString = $stopXMLString . "</Stop>";
                        }
                        $stopXMLString = $stopXMLString . "</Stops>";
                        $stopDataString = $sortedArray[0]->getStopName() . ":" . $sortedArray[0]->getLatitude() . ":" . $sortedArray[0]->getLongitude() . ":" . $sortedArray[0]->getDistance();
                    }
                }
            } else {
                if ($rowsnum > 1) {
                    $stopXMLString = $stopXMLString . "<Info>More than one matching address found in road database. Kindly add some more specifics</Info>";
                    $stopXMLString = $stopXMLString . "<ErrorCode>MA</ErrorCode>";
                    $stopXMLString = $stopXMLString . "<Stops>";
                    $stopXMLString = $stopXMLString . "<Stop>";
                    $stopXMLString = $stopXMLString . "</Stop>";
                    $stopXMLString = $stopXMLString . "</Stops>";
                    //                if($DEBUG)
                    //                    echo "More than one matching address found in road database. Kindly add some more specifics";
                    $stopDataString = "m:m:m:m";
                } else {
                    //                if($DEBUG)
                    //                    echo "Found in the road database"."<br/>";
                    // we found the address in th road data base but unfortunately all the stops are more than KM .
                    // this issue will not be there after we have the pegging of the stops.
                    // in the first sql itself we will know the stop that is meant for this road address
                    $log->LogDebug("[" . $mediaType . "] The address " . $addr . " found in the road database ");
                    $row = mysql_fetch_row($result);
                    $addrLat = $row[3];
                    $addrLong = $row[4];
                    $stopNumber = $row[5];
                    $stopName = $row[6];
                    $vicinityDistance = $row[7];
                    $originalRequestedLatitude = $addrLat;
                    $originalRequestedLongitude = $addrLong;
                    //get the latutude/logitude of the stop
                    $sqlStop = "Select * from Stops where SNo='" . $stopNumber . "'";
                    $resultStop = mysql_query($sqlStop);
                    $rowStop = mysql_fetch_row($resultStop);
                    $stopLat = $rowStop[2];
                    $stopLon = $rowStop[3];
                    $stopXMLString = $stopXMLString . "<Info>Address Found in the Road Database</Info>";
                    $stopXMLString = $stopXMLString . "<ErrorCode>RA</ErrorCode>";
                    $stopXMLString = $stopXMLString . "<Stops>";
                    $stopXMLString = $stopXMLString . "<Stop>";
                    //$map->addMarkerByCoords($sortedArray[$i]->getLongitude(),$sortedArray[$i]->getLatitude(),$sortedArray[$i]->getStopName().$sortedArray[$i]->getDistance(),getBusesForStop($sortedArray[$i]->getStopName()),'');
                    $stopXMLString = $stopXMLString . "<Name>" . htmlentities($stopName) . "</Name>";
                    $stopXMLString = $stopXMLString . "<Latitude>" . $stopLat . "</Latitude>";
                    $stopXMLString = $stopXMLString . "<Longitude>" . $stopLon . "</Longitude>";
                    $stopXMLString = $stopXMLString . "<Distance>" . $vicinityDistance . "</Distance>";
                    $stopXMLString = $stopXMLString . "<Buses>" . getBusesForStop($stopName) . "</Buses>";
                    $stopXMLString = $stopXMLString . "</Stop>";
                    $stopXMLString = $stopXMLString . "</Stops>";
                    $stopDataString = $stopName . ":" . $stopLat . ":" . $stopLon . ":" . $vicinityDistance;
                    //echo $addrLat;
                    //$map->addMarkerByCoords($addrLong,$addrLat,$addr,'','');
                    /*$query="SELECT  StopName, Latitude, Longitude FROM Stops WHERE (Latitude - ".$addrLat." < .009) AND (Latitude - ".$addrLat." > - .009) AND (Longitude - ".$addrLong." > - .009) AND (Longitude - ".$addrLong." < 0.009)";
                                    //echo $query."<br/>";
                                    $result= mysql_query($query);
                                    $rowsnum = mysql_num_rows($result);
                                    if($rowsnum==0)
                                    {
                                        $stopXMLString=$stopXMLString."<Info>All stops are more then 1 km far</Info>";
                                        $stopXMLString=$stopXMLString."<ErrorCode>KM</ErrorCode>";
                                        $stopXMLString=$stopXMLString."<Stops>";
                                        $stopXMLString=$stopXMLString."<Stop>";
                                        $stopXMLString=$stopXMLString."</Stop>";
                                        $stopXMLString=$stopXMLString."</Stops>";
                                        //echo "All stops are more then 1 km far";
                                    }
                                    else
                                    {
                                        // we should try to show nearest 5 at the max
                                        // one way is to create a array of datastructure and then sort them on the basis of distance.
                                        // also find the buses for the finalised stops
                                        $arrBusStops= array();
                                        $stopXMLString=$stopXMLString."<Info>Address Found in the Road Database</Info>";
                                        $stopXMLString=$stopXMLString."<ErrorCode>RA</ErrorCode>";
                                        for($i=0;$i<$rowsnum;$i++)
                                        {
                                            $row=mysql_fetch_row($result);
                                            $dist=distance($addrLat, $addrLong, $row[1],$row[2], "K");
                                            $BDS= new BusDataStructure($row[0],$row[1],$row[2],$dist);
                                            array_push($arrBusStops,$BDS);
                    
                                        }
                                        // now do the comparison of the data
                                        $tempSortedArray=BubbleSort($arrBusStops,$rowsnum);
                                        // this is the place to do One more level of filtering based on the number of buses
                                        $sortedArray=applyFilterForAddress($tempSortedArray);
                                        //print_r($sortedArray);
                                        $stopXMLString=$stopXMLString."<Stops>";
                                        for($i=0;$i<sizeof($sortedArray);$i++)
                                        {
                                            //echo $sortedArray[$i]->getStopName().$sortedArray[$i]->getDistance()."<br/>";
                                        $stopXMLString=$stopXMLString."<Stop>";	//$map->addMarkerByCoords($sortedArray[$i]->getLongitude(),$sortedArray[$i]->getLatitude(),$sortedArray[$i]->getStopName().$sortedArray[$i]->getDistance(),getBusesForStop($sortedArray[$i]->getStopName()),'');
                                        $stopXMLString=$stopXMLString."<Name>".htmlentities($sortedArray[$i]->getStopName())."</Name>";
                                        $stopXMLString=$stopXMLString."<Latitude>".$sortedArray[$i]->getLatitude()."</Latitude>";
                                        $stopXMLString=$stopXMLString."<Longitude>".$sortedArray[$i]->getLongitude()."</Longitude>";
                                        $stopXMLString=$stopXMLString."<Distance>".$sortedArray[$i]->getDistance()."</Distance>";
                                        $stopXMLString=$stopXMLString."<Buses>".getBusesForStop($sortedArray[$i]->getStopName())."</Buses>";
                                        $stopXMLString=$stopXMLString."</Stop>";
                    
                                        }
                                        $stopXMLString=$stopXMLString."</Stops>";
                                        $stopDataString=$sortedArray[0]->getStopName().":".$sortedArray[0]->getLatitude().":".$sortedArray[0]->getLongitude().":".$sortedArray[0]->getDistance();
                    
                                    }*/
                }
            }
        }
    }
    $stopXMLString = $stopXMLString . "<Result>";
    list($BusStop, $BusLatitude, $BusLongitude, $BusOffset) = explode(":", $stopDataString);
    $stopXMLString = $stopXMLString . "<BusStop>" . htmlentities($BusStop) . "</BusStop>";
    $stopXMLString = $stopXMLString . "<BusStopLatitude>" . $BusLatitude . "</BusStopLatitude>";
    $stopXMLString = $stopXMLString . "<BusStopLongitude>" . $BusLongitude . "</BusStopLongitude>";
    $stopXMLString = $stopXMLString . "<Offset>" . $BusOffset . "</Offset>";
    $stopXMLString = $stopXMLString . "<Buses>" . getBusesForStopWithFrequency($BusStop) . "</Buses>";
    $stopXMLString = $stopXMLString . "<OriginalStopLatitude>" . $originalRequestedLatitude . "</OriginalStopLatitude>";
    $stopXMLString = $stopXMLString . "<OriginalStopLongitude>" . $originalRequestedLongitude . "</OriginalStopLongitude>";
    $stopXMLString = $stopXMLString . "</Result>";
    $stopXMLString = $stopXMLString . "</Address>";
    return $stopXMLString;
}
Example #2
0
/**
The xml should be
<Address>
<Value></Value>
<Info></Info>
<Stops>
<Stop>
<Name></Name>
<Latitude></Latitude>
<Longitude></Longitude>
<Distance></Distance>
<Buses></Buses>
</Stop>
.
.
</Stops>
<Result>
<BusStop></BusStop>
<BusStopLatitude></BusStopLatitude>
<BusStopLongitude></BusStopLongitude>
<Offset></Offset>
</Result>
</Address>
**/
function getStopForAddress($addr, $log)
{
    //echo $addr;
    $stopDataString = '';
    $originalRequestedLatitude = 0;
    $originalRequestedLongitude = 0;
    // create a xml string
    $stopXMLString = '<Address>';
    $query = "Select StopName, Latitude, Longitude from Stops Where StopName LIKE '" . $addr . "%'";
    $result = mysql_query($query);
    $rowsnum = mysql_num_rows($result);
    if ($rowsnum > 1) {
        if ($DEBUG) {
            echo "more than one stops are found with your search criteria <br/>";
        }
        $log->LogDebug("The address " . $addr . " matches more than one in stops table. taking the first one ");
        $stopXMLString = $stopXMLString . "<Info>More than one stops are found with your search criteria</Info>";
        $stopXMLString = $stopXMLString . "<ErrorCode>MS</ErrorCode>";
        $stopXMLString = $stopXMLString . "<Stops>";
        // this is the case wehre we can check which is the best choice in terms of buses coming thourgh..E.g. Marathahalli
        $maxBus = 0;
        for ($i = 0; $i < $rowsnum; $i++) {
            $row = mysql_fetch_row($result);
            $stopXMLString = $stopXMLString . "<Stop>";
            if ($DEBUG) {
                echo $row[0] . "<br/>";
            }
            $stopXMLString = $stopXMLString . "<Name>" . htmlentities($row[0]) . "</Name>";
            $stopXMLString = $stopXMLString . "<Latitude>" . $row[1] . "</Latitude>";
            $stopXMLString = $stopXMLString . "<Longitude>" . $row[2] . "</Longitude>";
            $stopXMLString = $stopXMLString . "<Distance>-1</Distance>";
            $stopXMLString = $stopXMLString . "<Buses>" . getBusesForStop($row[0]) . "</Buses>";
            // $stopDetails=$row[0];
            //$map->addMarkerByCoords($row[2],$row[1],$row[0],getBusesForStop($row[0]),'');
            $NumberOfBus = getNumberOfBusesForStop($row[0]);
            if ($NumberOfBus > $maxBus) {
                $maxBus = $NumberOfBus;
                $stopDataString = $row[0] . ":" . $row[1] . ":" . $row[2] . ":0";
            }
            $stopXMLString = $stopXMLString . "</Stop>";
        }
        $stopXMLString = $stopXMLString . "</Stops>";
    } else {
        if ($rowsnum == 1) {
            $stopXMLString = $stopXMLString . "<Info>Your address matches the correct stop name</Info>";
            $stopXMLString = $stopXMLString . "<ErrorCode>OS</ErrorCode>";
            $stopXMLString = $stopXMLString . "<Stops>";
            $stopXMLString = $stopXMLString . "<Stop>";
            $row = mysql_fetch_row($result);
            if ($DEBUG) {
                echo " Your stop is " . $row[0] . "<br/>";
            }
            $log->LogDebug("The address " . $addr . " is a valid stopname ");
            $stopXMLString = $stopXMLString . "<Name>" . htmlentities($row[0]) . "</Name>";
            $stopXMLString = $stopXMLString . "<Latitude>" . $row[1] . "</Latitude>";
            $stopXMLString = $stopXMLString . "<Longitude>" . $row[2] . "</Longitude>";
            $stopXMLString = $stopXMLString . "<Distance>-1</Distance>";
            $stopXMLString = $stopXMLString . "<Buses>" . getBusesForStop($row[0]) . "</Buses>";
            $stopXMLString = $stopXMLString . "</Stop>";
            // $map->addMarkerByCoords($row[2],$row[1],$row[0],getBusesForStop($row[0]),'');
            $stopDataString = $row[0] . ":" . $row[1] . ":" . $row[2] . ":0";
            $stopXMLString = $stopXMLString . "</Stops>";
        } else {
            if ($rowsnum == 0) {
                //echo "going to the roads database"."<br/>";
                // Checking in the road database
                $query = "Select * from RoadAddresses Where Address ='" . $addr . "'";
                $result = mysql_query($query);
                $rowsnum = mysql_num_rows($result);
                if ($rowsnum == 0) {
                    if ($DEBUG) {
                        echo "The address not found in the database so fetching from internet <br/>";
                    }
                    //$stopXMLString=$stopXMLString."<Info>The address ".$addr." not found in the database so fetching from internet</Info>";
                    $log->LogDebug("The address " . $addr . " not found in the database so fetching from internet ");
                    // fimd from the net
                    $addressString = "http://maps.google.com/maps/api/geocode/json?address=" . urlencode($addr) . ",+Bangalore,+Karnataka,+India&sensor=false";
                    $geocode = file_get_contents($addressString);
                    //echo $geocode;
                    $formattedAddress = return_between($geocode, "formatted_address", "\",", EXCL);
                    $formattedAddressNoiseRemoved = return_between($formattedAddress, ":", "India", INCL);
                    $place = substr($formattedAddressNoiseRemoved, 3);
                    //	echo $place."<br/>";
                    ///echo $place."<br/>";
                    $arr = array();
                    $arr = split(",", $place);
                    if (strcmp(trim($arr[0]), "Bengaluru") == 0 && strcmp(trim($arr[1]), "Karnataka") == 0 && strcmp(trim($arr[2]), "India") == 0) {
                        $stopXMLString = $stopXMLString . "<Info>Address is not valid</Info>";
                        $stopXMLString = $stopXMLString . "<ErrorCode>AM</ErrorCode>";
                        $stopXMLString = $stopXMLString . "<Stops>";
                        $stopXMLString = $stopXMLString . "<Stop>";
                        $stopXMLString = $stopXMLString . "</Stop>";
                        $stopXMLString = $stopXMLString . "</Stops>";
                        if ($DEBUG) {
                            echo "<h3>" . trim($roadName) . "  Address is not valid" . "</h3><br/>";
                        }
                        $stopDataString = "0:0:0:0";
                    } else {
                        $locations = return_between($geocode, "location", "}", EXCL);
                        //echo $locations;
                        $latitude = return_between($locations, "lat\"", ",", EXCL);
                        $latitude = substr($latitude, 3);
                        //echo $latitude;
                        list($lat, $long) = split(",", $locations);
                        list($cap, $val) = split(":", $long);
                        //echo trim($val);
                        $addrLat = trim($latitude);
                        $addrLong = trim($val);
                        $originalRequestedLatitude = $addrLat;
                        $originalRequestedLongitude = $addrLong;
                        // add the marker for the searched address
                        //$map->addMarkerIcon("marker_star.png","marker_shadow.png",15,29,15,3);
                        //$map->addMarkerByCoords($addrLong,$addrLat,$addr,'','');
                        $query = "SELECT  StopName, Latitude, Longitude FROM Stops WHERE (Latitude - " . $addrLat . " < .009) AND (Latitude - " . $addrLat . " > - .009) AND (Longitude - " . $addrLong . " > - .009) AND (Longitude - " . $addrLong . " < 0.009)";
                        //echo $query."<br/>";
                        $result = mysql_query($query);
                        $rowsnum = mysql_num_rows($result);
                        if ($rowsnum == 0) {
                            // this is the case when you gave an address that even could not be found usign the internet search
                            $stopXMLString = $stopXMLString . "<Info>Address is not valid</Info>";
                            $stopXMLString = $stopXMLString . "<ErrorCode>AM</ErrorCode>";
                            $stopXMLString = $stopXMLString . "<Stops>";
                            $stopXMLString = $stopXMLString . "<Stop>";
                            $stopXMLString = $stopXMLString . "</Stop>";
                            $stopXMLString = $stopXMLString . "</Stops>";
                            if ($DEBUG) {
                                echo "<h3>" . trim($roadName) . "  Address is not valid" . "</h3><br/>";
                            }
                            $stopDataString = "0:0:0:0";
                        } else {
                            $arrBusStops = array();
                            for ($i = 0; $i < $rowsnum; $i++) {
                                $row = mysql_fetch_row($result);
                                //echo $row[0];
                                $dist = distance($addrLat, $addrLong, $row[1], $row[2], "K");
                                $BDS = new BusDataStructure($row[0], $row[1], $row[2], $dist);
                                array_push($arrBusStops, $BDS);
                                //echo distance($addrLat, $addrLong, $row[1],$row[2], "K") . " kilometers<br>";
                                //$map->addMarkerByCoords($row[2],$row[1],$row[0].distance($addrLat, $addrLong, $row[1],$row[2], "K"),'','');
                            }
                            // now do the comparison of the data
                            $tempSortedArray = BubbleSort($arrBusStops, $rowsnum);
                            // this is the place to do One more level of filtering based on the number of buses
                            $sortedArray = applyFilterForAddress($tempSortedArray);
                            //print_r($sortedArray);
                            $stopXMLString = $stopXMLString . "<Info>Address Found via Internet</Info>";
                            $stopXMLString = $stopXMLString . "<ErrorCode>IA</ErrorCode>";
                            $stopXMLString = $stopXMLString . "<Stops>";
                            for ($i = 0; $i < sizeof($sortedArray); $i++) {
                                //echo $sortedArray[$i]->getStopName().$sortedArray[$i]->getDistance()."<br/>";
                                $stopXMLString = $stopXMLString . "<Stop>";
                                //$map->addMarkerByCoords($sortedArray[$i]->getLongitude(),$sortedArray[$i]->getLatitude(),$sortedArray[$i]->getStopName().$sortedArray[$i]->getDistance(),getBusesForStop($sortedArray[$i]->getStopName()),'');
                                $stopXMLString = $stopXMLString . "<Name>" . htmlentities($sortedArray[$i]->getStopName()) . "</Name>";
                                $stopXMLString = $stopXMLString . "<Latitude>" . $sortedArray[$i]->getLatitude() . "</Latitude>";
                                $stopXMLString = $stopXMLString . "<Longitude>" . $sortedArray[$i]->getLongitude() . "</Longitude>";
                                $stopXMLString = $stopXMLString . "<Distance>" . $sortedArray[$i]->getDistance() . "</Distance>";
                                $stopXMLString = $stopXMLString . "<Buses>" . getBusesForStop($sortedArray[$i]->getStopName()) . "</Buses>";
                                $stopXMLString = $stopXMLString . "</Stop>";
                            }
                            $stopXMLString = $stopXMLString . "</Stops>";
                            $stopDataString = $sortedArray[0]->getStopName() . ":" . $sortedArray[0]->getLatitude() . ":" . $sortedArray[0]->getLongitude() . ":" . $sortedArray[0]->getDistance();
                        }
                    }
                } else {
                    if ($rowsnum > 1) {
                        $stopXMLString = $stopXMLString . "<Info>More than one matching address found in road database. Kindly add some more specifics</Info>";
                        $stopXMLString = $stopXMLString . "<ErrorCode>MA</ErrorCode>";
                        $stopXMLString = $stopXMLString . "<Stops>";
                        $stopXMLString = $stopXMLString . "<Stop>";
                        $stopXMLString = $stopXMLString . "</Stop>";
                        $stopXMLString = $stopXMLString . "</Stops>";
                        if ($DEBUG) {
                            echo "More than one matching address found in road database. Kindly add some more specifics";
                        }
                        $stopDataString = "m:m:m:m";
                    } else {
                        if ($DEBUG) {
                            echo "Found in the road database" . "<br/>";
                        }
                        $log->LogDebug("The address " . $addr . " found in the road database ");
                        $row = mysql_fetch_row($result);
                        $addrLat = $row[3];
                        $addrLong = $row[4];
                        $originalRequestedLatitude = $addrLat;
                        $originalRequestedLongitude = $addrLong;
                        //echo $addrLat;
                        //$map->addMarkerByCoords($addrLong,$addrLat,$addr,'','');
                        $query = "SELECT  StopName, Latitude, Longitude FROM Stops WHERE (Latitude - " . $addrLat . " < .009) AND (Latitude - " . $addrLat . " > - .009) AND (Longitude - " . $addrLong . " > - .009) AND (Longitude - " . $addrLong . " < 0.009)";
                        //echo $query."<br/>";
                        $result = mysql_query($query);
                        $rowsnum = mysql_num_rows($result);
                        if ($rowsnum == 0) {
                            $stopXMLString = $stopXMLString . "<Info>All stops are more then 1 km far</Info>";
                            $stopXMLString = $stopXMLString . "<ErrorCode>KM</ErrorCode>";
                            $stopXMLString = $stopXMLString . "<Stops>";
                            $stopXMLString = $stopXMLString . "<Stop>";
                            $stopXMLString = $stopXMLString . "</Stop>";
                            $stopXMLString = $stopXMLString . "</Stops>";
                            //echo "All stops are more then 1 km far";
                        } else {
                            // we should try to show nearest 5 at the max
                            // one way is to create a array of datastructure and then sort them on the basis of distance.
                            // also find the buses for the finalised stops
                            $arrBusStops = array();
                            $stopXMLString = $stopXMLString . "<Info>Address Found in the Road Database</Info>";
                            $stopXMLString = $stopXMLString . "<ErrorCode>RA</ErrorCode>";
                            for ($i = 0; $i < $rowsnum; $i++) {
                                $row = mysql_fetch_row($result);
                                $dist = distance($addrLat, $addrLong, $row[1], $row[2], "K");
                                $BDS = new BusDataStructure($row[0], $row[1], $row[2], $dist);
                                array_push($arrBusStops, $BDS);
                            }
                            // now do the comparison of the data
                            $tempSortedArray = BubbleSort($arrBusStops, $rowsnum);
                            // this is the place to do One more level of filtering based on the number of buses
                            $sortedArray = applyFilterForAddress($tempSortedArray);
                            //print_r($sortedArray);
                            $stopXMLString = $stopXMLString . "<Stops>";
                            for ($i = 0; $i < sizeof($sortedArray); $i++) {
                                //echo $sortedArray[$i]->getStopName().$sortedArray[$i]->getDistance()."<br/>";
                                $stopXMLString = $stopXMLString . "<Stop>";
                                //$map->addMarkerByCoords($sortedArray[$i]->getLongitude(),$sortedArray[$i]->getLatitude(),$sortedArray[$i]->getStopName().$sortedArray[$i]->getDistance(),getBusesForStop($sortedArray[$i]->getStopName()),'');
                                $stopXMLString = $stopXMLString . "<Name>" . htmlentities($sortedArray[$i]->getStopName()) . "</Name>";
                                $stopXMLString = $stopXMLString . "<Latitude>" . $sortedArray[$i]->getLatitude() . "</Latitude>";
                                $stopXMLString = $stopXMLString . "<Longitude>" . $sortedArray[$i]->getLongitude() . "</Longitude>";
                                $stopXMLString = $stopXMLString . "<Distance>" . $sortedArray[$i]->getDistance() . "</Distance>";
                                $stopXMLString = $stopXMLString . "<Buses>" . getBusesForStop($sortedArray[$i]->getStopName()) . "</Buses>";
                                $stopXMLString = $stopXMLString . "</Stop>";
                            }
                            $stopXMLString = $stopXMLString . "</Stops>";
                            $stopDataString = $sortedArray[0]->getStopName() . ":" . $sortedArray[0]->getLatitude() . ":" . $sortedArray[0]->getLongitude() . ":" . $sortedArray[0]->getDistance();
                        }
                    }
                }
            }
        }
    }
    $stopXMLString = $stopXMLString . "<Result>";
    list($BusStop, $BusLatitude, $BusLongitude, $BusOffset) = split(":", $stopDataString);
    $stopXMLString = $stopXMLString . "<BusStop>" . htmlentities($BusStop) . "</BusStop>";
    $stopXMLString = $stopXMLString . "<BusStopLatitude>" . $BusLatitude . "</BusStopLatitude>";
    $stopXMLString = $stopXMLString . "<BusStopLongitude>" . $BusLongitude . "</BusStopLongitude>";
    $stopXMLString = $stopXMLString . "<Offset>" . $BusOffset . "</Offset>";
    $stopXMLString = $stopXMLString . "<Buses>" . getBusesForStop($BusStop) . "</Buses>";
    $stopXMLString = $stopXMLString . "<OriginalStopLatitude>" . $originalRequestedLatitude . "</OriginalStopLatitude>";
    $stopXMLString = $stopXMLString . "<OriginalStopLongitude>" . $originalRequestedLongitude . "</OriginalStopLongitude>";
    $stopXMLString = $stopXMLString . "</Result>";
    $stopXMLString = $stopXMLString . "</Address>";
    return $stopXMLString;
}