3 回答

TA貢獻(xiàn)1864條經(jīng)驗 獲得超2個贊
這是SQL語句,它將找到距離37,-122坐標(biāo)半徑25英里內(nèi)最接近的20個位置。它根據(jù)該行的緯度/經(jīng)度和目標(biāo)緯度/經(jīng)度計算距離,然后只請求距離值小于25的行,按距離對整個查詢進(jìn)行排序,并將其限制為20個結(jié)果。要搜索公里而不是英里,請將3959替換為6371。
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin(radians(lat)) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;

TA貢獻(xiàn)1830條經(jīng)驗 獲得超9個贊
$greatCircleDistance = acos( cos($latitude0) * cos($latitude1) * cos($longitude0 - $longitude1) + sin($latitude0) * sin($latitude1));
SELECT acos( cos(radians( $latitude0 )) * cos(radians( $latitude1 )) * cos(radians( $longitude0 ) - radians( $longitude1 )) + sin(radians( $latitude0 )) * sin(radians( $latitude1 )) ) AS greatCircleDistance FROM yourTable;
3959
6371
3440
SELECT id FROM spatialEnabledTable WHERE MBRWithin(ogc_point, GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'))
添加回答
舉報