ios生成的百度地图轨迹图如何在后端展示

我想做一个IOS端记录轨迹,然后java后端取到,并且在java后端展示IOS记录的轨迹,怎么做?请详细一点

3个回答

<!DOCTYPE html>

body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;} #l-map{height:100%;width:78%;float:left;border-right:2px solid #bcbcbc;} #r-result{height:100%;width:20%;float:left;}

GPS转百度

//GPS坐标 var xx = 117.126575995835; var yy = 36.6702207308909; var gpsPoint = new BMap.Point(xx,yy); //地图初始化 var bm = new BMap.Map("allmap"); bm.centerAndZoom(gpsPoint, 15); bm.addControl(new BMap.NavigationControl()); //添加谷歌marker和label var markergps = new BMap.Marker(gpsPoint); bm.addOverlay(markergps); //添加GPS标注 var labelgps = new BMap.Label("我是GPS标注哦",{offset:new BMap.Size(20,-10)}); markergps.setLabel(labelgps); //添加GPS标注 //坐标转换完之后的回调函数 translateCallback = function (point){ var marker = new BMap.Marker(point); bm.addOverlay(marker); var label = new BMap.Label("我是百度标注哦",{offset:new BMap.Size(20,-10)}); marker.setLabel(label); //添加百度label bm.setCenter(point); alert("转化为百度坐标为:"+point.lng + "," + point.lat); } setTimeout(function(){ BMap.Convertor.translate(gpsPoint,0,translateCallback); //真实经纬度转成百度坐标 }, 2000);
4.没有提供坐标怎么办?注意看API中的定位实例里面有一个浏览器定位,在这里说一下不要用PC来定位,很不准(大概和基站有关或者路由器,不了解)。本人亲测用手机很准,但也有个几百米误差,目前测试下来最准的就是移动端连WiFi,也就是GPS定位加WiFi可以准确定位到你家。 大家看看下面的链接误差多少
为什么不准呢,大家看一下网页版的百度地图吧点我进入百度地图官网 ,是不是也一样?所以就不要折腾了,这种偏移是不可避免 的了,H5的定位肯定是不如安卓或者ios的SDK的。由于他只定位一次,那么加个定时器就可以模拟实时定位了。
5.如何画轨迹?下面写上画坐标的代码,当ajax调用到后台数据之后,返回给你一串json,你将这些数据进行处理,循环遍历之后生成一个 [new BMap.Point(x1 ,y1) , new BMap.Point(x2 ,y2), new BMap.Point(x3 ,y3)...] 这样的数组,也就是下面代码中的arrs参数,另外红色部分就是画线的函数,strokeColor代表的是绘制的颜色,strokeWeight代表粗度,strokeOpacity代表透明度,最后用addOverlay添加到地图中就行。
[javascript] view plain copy
var arrs = [];

var Point;

//ajax调后台坐标

$.ajax({

url: "/Share/HuoQuZuoBiao",

type: "post",

data: {

DID: DID

},

success: function (msg) {

var json = eval(msg);

for (var i = 0; i < json.length; i++) {

Point = new BMap.Point(json[i].XZhuoBiao, json[i].YZhuoBiao);

arrs.push(Point);

}

var line = new BMap.Polyline(arrs, { strokeColor: "black", strokeWeight: 4, strokeOpacity: 0.7 }); //创建弧线对象

map.addOverlay(line); //添加到地图中

}

})
6.最后如何添加开始和结束的标注呢,首先,你得获取你这条记录的开始坐标和结束坐标,以这样的方式定义:
[javascript] view plain copy
var firstPoint = new BMap.Point( 经度 , 纬度 ); //开始点

var lastPoint = new BMap.Point( 经度 , 纬度 ); //结束点

最最后就是添加标注了:
[javascript] view plain copy
//起点标注

var marker1 = new BMap.Marker(firstPoint); //将起点转化成标注点

map.addOverlay(marker1); //将起点标注点添加到地图上

var label1 = new BMap.Label("起点", { offset: new BMap.Size(20, -10) });

marker1.setLabel(label1);

//终点标注

var marker2 = new BMap.Marker(lastPoint); //将终点转化成标注点

map.addOverlay(marker2); //将终点标注点添加到地图上

var label2 = new BMap.Label("终点", { offset: new BMap.Size(20, -10) });

marker2.setLabel(label2);
7.文章最后提一下GPS转百度坐标的问题:
当我们兴匆匆地把GPS设备传来的经纬度坐标标记到电子地图上时,发现地图上的位置和实际位置相差甚远,这就是天朝上国特有的地图加偏,以安全之名,行掩耳盗铃之事,给我们的开发带来了不必要的麻烦,至于加偏的原因,大家百度一下,网上一大堆,这里就不废话了。除GPS设备本身加偏外,电子地图上的坐标也不是真实的,要想正确显示到地图上,还必须将收到的加偏坐标(俗称火星坐标)换算到地图对应的坐标,也就是我们常说的纠偏,而国内用的比较多的地图主要是谷歌和百度,前者有具体的控件,比较好解决,后者就麻烦了,本人这段时间为此事折腾得不轻,但功夫不费有心人,总算比较完美地解决了,故整理一下,给还在或将要受此折腾的人参考。和大多数人一样,碰到这个问题时,首先想到了百度,总结了百度结果,主要有以下三个方法:
1.使用控件
如果和谷歌地图一样,有一个控件,直接传入GPS坐标得到地图坐标,那就省事了,通过正常途径获取控件的话,我们这种小公司还没有那个实力,而非正常途经的控件或算法貌似还没有泄漏出来,即使泄漏了,你也不敢放心使用,万一有一天,被以泄漏“ 国家”的名义请你去喝茶就得不偿失了,因此,本方法基本放弃。
2.百度地图接口
百度网站提供了接口,只要通过http传入GPS坐标参数就可以获得对应的地图坐标,该方法优点是方便准确,不足也很明显,受网速、百度服务器等影响,处理大量并发业务时力不从心。
3.数据库
所谓的加偏,就是将真实坐标加上一定的偏移量,而这个偏移量又不是线性的,不同地区偏移不一样,但同一地区偏移量却差不多,因此,有人就使用了个暴力破解的方法,将全国按GPS坐标分成很多小块,然后查出每个小块的偏移量,并保存到数据库里面,需要纠偏时,先根据GPS坐标取出对应区域的偏移量,反算出地图坐标。优点:本地执行,速度快,缺点:中国太大了,存放区域的记录有几千万条,不仅占用了大量存储空间,检索速度也大受影响,更要命的是,网上也很难找到一个完整的数据库,有些网站说有完整的,但要Money,提到Money就不亲热了,毕竟我们是个人或小公司嘛,钱不是问题,问题是没钱。
貌似进入了一个死胡同,但我们仔细一想,数据库方法不错,但有点浪费,因为我们面向的客户大多是某区域的,而且,车辆行驶的路线相对是固定的(尤其是客运班车),塔克拉玛干沙漠或者居民小区楼顶的坐标对于我们来说,貌似没有多少意义,理论上,我们需要的仅仅是客户车辆行驶区域的坐标就可以了,车辆能到达的区域(通常是公路)相对整个国土面积来说,太小了,因此,有这么一个轻量级的数据库是不是就完美了呢?本文正是基于这一思路,将方法2和方法3结合起来,巧妙解决了百度地图纠偏问题。
基本原理:收到GPS坐标后,首先计算出该坐标所属的区域,然后再从本地数据库查询该区域的偏移量,如果查询到,直接和该偏移相加得到地图坐标,如果没有查询到,则从百度网站接口查询,并和GPS坐标相减得到偏移,将本偏移存放到本地数据库,然后直接返回从百度接口得到的地图坐标。换句话说,我们自己根据车辆使用过的坐标,构建了一个轻量级的数据库,使用一段时间后,我们会发现,绝大部分数据都是从本地数据库获取的,数据量也就区区几十万条。

之前有做过类似的功能
手机端每3秒取下坐标
取到的坐标跟上一个坐标计算距离 大于50米保存 小于就舍弃
等到距离相加大雨500米或者1000米就上传下服务器
然后根据坐标点画线
很久以前用的现在百度地图高度地图应该有更好的方法吧

qwe996914516
仙风道骨的loser
大约 2 年之前 回复
qwe996914516
仙风道骨的loser
大约 2 年之前 回复
qwe996914516
仙风道骨的loser
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问