php中的半径搜索结果函数


Radius Search Results function in php

我在我的网站上有一个搜索功能,它接受城市状态和Zip并搜索半径并显示发现的结果。我已经测试了所有内容,但它在这行代码中中断:

if ($origin_id[0] != -1)
        $sql .= " AND " . $prefix . ".OriginLocationID IN (" . implode(",", $origin_id) . ") ";

Globals被定义并正确显示…如果我不输入半径,它将显示该城市的结果。但如果输入半径,它就会中断…

我也包括了半径函数…

function GetLocationSearchCriteria(&$sql, &$urlappend, $prefix)
    {
        $origin_id = Location::GetLocationID($GLOBALS["OriginState"], $GLOBALS["OriginCity"], $GLOBALS["OriginZip"]);
        if (!is_array($origin_id))
        {
            $o = $origin_id;
            $origin_id = array();
            $origin_id[0] = $o;
        }
        if (!empty($GLOBALS["OriginRadius"]))
        {
            $origin = new Location($origin_id[0]);
----------->>>>>>   $origin_id = $origin->GetRadiusLocations($GLOBALS["OriginRadius"]);
            $urlappend .= "&OriginRadius=" . $GLOBALS["OriginRadius"];
        }
        // build query
        if ($origin_id[0] != -1)
            $sql .= " AND " . $prefix . ".OriginLocationID IN (" . implode(",", $origin_id) . ") ";
    }
    function GetRadiusLocations($radius)
        {
            $sql = "SELECT LocationID 
                    FROM locations 
                    WHERE (POW((69.1*(Longitude'"" . $this->Longitude . "'")*" . cos($this->Latitude/57.3) . "),'"2'")+POW((69.1*(Latitude-'"" . $this->Latitude . "'")),'"2'"))<(" . $radius * $radius . ") ";
            $conn = &$GLOBALS["dbSettings"]->GetConnection();
            $rs = &$conn->Execute($sql);
            if ($rs === false)
                return -1;
            $location_ids = array();
            while (!$rs->EOF)
            {
                array_push($location_ids, $rs->fields[0]);
                $rs->MoveNext();
            }
            return $location_ids;
        }

找到了解决方案…我在等式的经度后面少了一个-…

应该是这个

(战俘((69.1 *(经度- '"。$ this ->经度。"'")"。因为($ this ->纬度/57.3)。2"),'"'")+战俘((69.1 (纬度- '"。$ this ->纬度。)"'",'"2 '"))& lt;("。$radius * $radius。")";