【问题标题】:Receive GPS data from android into cakephp - support for gps locations in cakePHP从 android 接收 GPS 数据到 cakephp - 支持 cakePHP 中的 gps 位置
【发布时间】:2013-02-18 11:40:20
【问题描述】:
我想将我的位置 GPS 数据从我的 android 手机发送到 cakePHP 网站。我浏览了我的 sql 并找到了可用于存储位置信息的 POINT 类型。但我不知道如何使用 cakePHP 样式代码插入这些信息。我希望能够在以后获得靠近我的位置。所以我的问题是:
1 - cakePHP 是否支持存储 GPS 数据和准备函数来获取给定经度和纬度对象的附近位置。
2 - 如果没有,如何在 cakePHP 中将接收到的经度和纬度插入到我的模型中,最好的数据类型是什么,因为我将在此之后查询附近的位置。
提前致谢。
【问题讨论】:
标签:
android
cakephp
geolocation
gps
【解决方案1】:
要将坐标存储为(纬度,经度)对,您可以将其存储为
float latitude,
float longitude
或作为
double latitdue,
double longitude
(这对在磁盘上浮动没有优势,但在代码中更兼容)
或者你甚至可以将它存储为整数
int latitude = (int) round(latDegrees * 1E7);
int longitude = (int) round(lonDegrees * 1E7);
因此您也可以将其存储到任何具有 (x,y) 的 Point 结构中
用 x 表示经度,用 y 表示纬度。
【解决方案2】:
我找到了如下解决方案:
在给定一个构造数组的情况下,要将数据插入到 cakePHP 中的模型中,我们使用这个:
$db = $this->Service->getDataSource();
$serv = array(
'name'=>$data['name'],
'loc_point' => $db->expression('POINT('.$dataJson['long'].','.$dataJson['lat'].')')
);
$this->Service->save($serv));
这一行是我在 cakePHP 中的问题:
'loc_point' => $db->expression('POINT('.$data['lng'].','.$data['lat'].')')
解决插入问题后,我从谷歌找到了获取附近位置的教程。它使用 lng 和 lat 作为十进制值,我更改了代码以遵循它。链接here