关于地图开发,一直想用iOS App 收集设备的地理位置,然后绘制成路线;
于是。。。。就开始着手了!但是采集的GPS老是不是非常精确,明明采集的参数是最精确的,为什么会有偏差啊?纳尼??后来查了资料,原来是需要地理位置坐标转换!
https://github.com/bytesking/YJLocationConverter;
坐标不准确,是因为百度地图用的是自己专用的坐标系;
需要把GPS世界坐标转化成火星坐标,用火星坐标转化成百度坐标;
上门连接是坐标转换工具;pod倒入非常方便;
php后台方面也遇到了相关问题:
//上传我的位置信息
function uploadMyLocation(){
$dataLocationString=input('locations');
$dataLocationJSON=json_decode($dataLocationString);
}
//PS:困扰一上午的节点 插数据库就是插不进去,是因为jsondecode转化过来的对象里面是 std Obj的对象 不是数组
打印输出结果:
/*
array(1) { [0]=> array(3) { ["longitude"]=> float(162.6226345) ["latitude"]=> float(31.26238) ["datestamp"]=> int(8888) } }
array(1) { [0]=> object(stdClass)#77 (3) { ["datestamp"]=> float(1626225641.93) ["latitude"]=> float(31.26238) ["longitude"]=> float(121.61608) } }
*/
$resultJsonArray = array(); for ($i=0; $i <count($dataLocationJSON); $i++) {
$array = (array)$dataLocationJSON[$i]; $resultJsonArray[]=$array; }
#debug $data =
[['longitude'=>162.6226345,'latitude'=>31.26238,'datestamp'=>8888] ];
var_dump($resultJsonArray);
$resultCode=Db::table('myLocationTable')->insertAll($resultJsonArray);
return $this->APIJsonRes($resultCode,'success',['1'=>$data,'2'=>$resultJsonArray]);
}
#######################下面是前端和后端配合的代码##################
{volist name="locationArray" id="locationItem"}
new BMapGL.Point({$locationItem.longitude},{$locationItem.latitude})
{/volist}
总结:
1.先开发iOS端数据的收集,以及后台收集,把GPS转成百度地图的坐标;
2.开发服务端,数据上传保存数据库;查询locations的数据库;
3. 利用百度地图的javaScrip SDK前端负责页面的显示;