google maps circle radius [米]与中心与圆周上的点之间的距离有多大差异[米]

时间:2014-12-29 12:08:44

标签: google-maps google-maps-api-3 geodesic-sphere

我正在使用谷歌地图javascript v3。 我在地图上画了一个圆圈,我允许用户修改半径。 然后,我将中心的坐标和以km为单位的半径发送到服务器脚本。 我提取距离小于中心半径的所有标记。我使用Great Circle公式和MySql GEOPOINT对象来计算距离:

(6371 * acos (cos(radians(".$coord_X_center."))* cos(radians(X(GEOPOINT)))
            * cos(radians(Y(GEOPOINT)) - radians(".$coord_Y_center."))
            + sin(radians(".$coord_X_center."))
            * sin( radians(X(GEOPOINT) )))) AS Distance FROM table_markers c
            HAVING Distance <= ".$radius." ORDER BY RATING desc,Distance;" 

现在考虑我为你准备的例子: Example 如果修改圆的半径,只是为了排除一个标记,则会有更多标记消失。这是因为在中心和消失的标记之间计算的距离高于圆的半径。 为什么?有什么不同?也许谷歌地图不像我在上面的公式中那样认为地球是一个球体?

更新

发送POST请求(使用firebug进行双重检查): centerx:8.222424000000046

centery:45.295839

半径:60.84800957919576

他们被铸造:

$coord_X_center = number_format((float) $post_filtered['centerx'], 4, '.', '');
$coord_Y_center = number_format((float) $post_filtered['centery'], 4, '.', '');
$radius = (int) $post_filtered['radius'];

通过以上公式回答:

{"names":["PONT-SAINT-MARTIN","FONTAINEMORE","LILLIANES","PERLOZ","GABY"],
"positions":[{"Lat":"7.81191320621736","Lon":"45.5991574533545"},
{"Lat":"7.88378299041174","Lon":"45.6488324511642"},
{"Lat":"7.85828195583629","Lon":"45.6242900876236"},
{"Lat":"7.81139246615188","Lon":"45.6285105114389"},
{"Lat":"7.88397564319245","Lon":"45.7144850123829"}]}

1 个答案:

答案 0 :(得分:0)

地球的半径是6378.1 kilometers(不是6371 km,至少根据Google的说法)。