Google maps api 3 谷歌地图API坐标范围计算

Google maps api 3 谷歌地图API坐标范围计算,google-maps-api-3,coordinates,geocoding,latitude-longitude,google-geocoder,Google Maps Api 3,Coordinates,Geocoding,Latitude Longitude,Google Geocoder,以下问题:我有一个带有pins坐标lat,lng的数据库表。我将地图当前边界发送到后端,以便从数据库中选择可见的管脚。我的代码cakePHP如下: private function getMapData($level = 1) { $x1 = $this->request->query('x1'); $x2 = $this->request->query('x2'); $y1 = $this->request->query('y1');

以下问题:我有一个带有pins坐标lat,lng的数据库表。我将地图当前边界发送到后端,以便从数据库中选择可见的管脚。我的代码cakePHP如下:

private function getMapData($level = 1)
{
    $x1 = $this->request->query('x1');
    $x2 = $this->request->query('x2');
    $y1 = $this->request->query('y1');
    $y2 = $this->request->query('y2');

    if ($x1 > $x2)
    {
        $tmp = $x1;
        $x1 = $x2;
        $x2 = $tmp;
    }
    if ($y1 > $y2)
    {
        $tmp = $y1;
        $y1 = $y2;
        $y2 = $tmp;
    }


    return $this->Map->find('all',
        array(
            'fields' => array(
                'Map.lat',
                'Map.lng',
                'Map.level_number'
            ),
            'conditions' => array('Map.level_number' => $level,
            'Map.lat BETWEEN ? AND ?' => array($x1, $x2),
            'Map.lng BETWEEN ? AND ?' => array($y1, $y2),
            ),

            'group' => 'Map.lat, Map.lng, Map.level_number' //for distinct values
        ));
}
查询只拾取坐标在bounds范围内的管脚。它在大多数情况下都能正常工作,不管哪个边界的角首先出现——左/右/上/下。 但有时这种简单的计算似乎不起作用。 我得到了边界和中心点。如果我在中心点进行计算,它有时不在界限之内,这真的很奇怪,但它确实是正确的数据。所以我怀疑在这个边界计算中还有一些我没有想到的东西。 下面是我得到的参数示例:?x1=68.6214942524305&y1=150.81473437500006&x2=-16.728397127562125&y2=173.31473437500006&x=36.520571863374705&y=-377.93526562499994&z=3 x1和y1是角点1 x2,y2角点2 x、 y是中心 z是zoomlevel
这不是一个很好的例子,因为中心的lng=-377,9。。但我收到了坐标在-90和90之间,lng在-180和180之间的请求,但我的计算仍然失败。我从数据库中获得了零数据,从地图中获得的中心点api不在我从同一api中获得的范围内。当距离太远时,你可以添加180°,并使用绝对值:abs-377.9+180。

但是当它在范围[180;180]内时有什么问题?它仍然会产生问题,可能需要加上180。我不知道怎么了。可能是硬件故障?不,坐标是正确的,我只是不明白坐标系在这种情况下如何计算中心坐标。我不计算它们,它是由前端的api函数完成的:this.map.getCenter I recon