天地图专题四:在天地图上显示运行轨迹

56 篇文章 5 订阅
7 篇文章 26 订阅

上一文章我们讲了如何根据标注点确定初始化地图时的缩放级别和中心点。 是很基本的需求。  


既然是地图,常常会有显示运行轨迹的需求。


本质上就是把一些点数据在地图上用线连接起来。 实现起来也是比较简单的。


主要有3点:

1.根据数据计算页面显示级别和中心点。

2.显示所有的轨迹点。起点和终点用不同的图标来表示。

3.显示连线。


步骤:

1.准备数据。我们直接把前几篇文章中的数据稍微修改一下。

		var lnglats = [
		{"B":"23.1","L":"113.3","PName":"1111","Status":1},
		{"B":"23.2","L":"113.4","PName":"2222","Status":1},
		{"B":"23.9","L":"114.1","PName":"3333","Status":3004},
		{"B":"24.7","L":"114.8","PName":"第四个点","Status":1},
		{"B":"24.8","L":"115.5","PName":"第五个点","Status":1},
		{"B":"25.3","L":"116.2","PName":"第六个点","Status":1},
		{"B":"26.1","L":"116.7","PName":"7777","Status":1},
		{"B":"27.5","L":"117.3","PName":"8888","Status":1}];
		//这是页面需要的数据。实际应用中常用ajax获取。坐标点状态。点的类型。点的名字。

2.根据上一文章讲的方法计算中心点和缩放级别。可使用  map.setViewport(Tlnglats) 这个接口。


3.加载地图。

		//加载基本地图
		function loadMap(){
			try {
				map = new TMap("mapDiv"); //初始化地图对象
                                map.centerAndZoom(new TLngLat(cenL, cenB), zoom);//设置显示地图的中心点和级别
                                map.enableHandleMouseScroll(); //允许鼠标双击放大地图   
		            } catch(err) {
		              	alert('天地图加载不成功,请稍候再试!你可以先使用其他功能!');
		            }
		}

4.在地图上加载所有的坐标点。起点与终点用不同的图标。方法与第二篇文章中加载标注点基本一样。  要注意的是  要自己调节一下图标的位置。偏移量 new TPixel(17, 34)。

因为地图上的标注点,同一个坐标点上的图标、线可能表现会有所不同。

	var iconMaker = [];//用来装标注点。
	//把轨迹点放到地图上
	function loadTrack () {
		if(iconMaker.length!=0){
			for(var m=0;m<iconMaker.length;m++){
				map.removeOverLay(iconMaker[m]);
			}
		}
		var  iconurl0 = 'images/pointOffline.jpg';//正常节点
		var iconurl1 = '../images/track_start_icon.png';//起点
		var iconurl2 = '../images/track_end_icon.png';//终点
		if (lnglats.length != 0) {
			markerOpt = new TMarkerOptions();
			var icon0= new TIcon(iconurl0, new TSize(4, 4), {anchor: new TPixel(4, 10)});
			var icon1 = new TIcon(iconurl1, new TSize(39, 32), {anchor: new TPixel(17, 34)});
			var icon2= new TIcon(iconurl2, new TSize(39, 32), {anchor: new TPixel(17, 34)});
			for (var i = 0; i < lnglats.length; i = i + 1) {
				iconMaker[i]  = new TMarker(new TLngLat(lnglats[i].L, lnglats[i].B), {icon: icon0});
				map.addOverLay(iconMaker[i]);
				if(i == 0){
					iconMaker[i]  = new TMarker(new TLngLat(lnglats[i].L, lnglats[i].B), {icon: icon1});
	              				map.addOverLay(iconMaker[i]);//起点
	              			}else if(i == lnglats.length-1){
	              				iconMaker[i]  = new TMarker(new TLngLat(lnglats[i].L, lnglats[i].B), {icon: icon2});
	              				map.addOverLay(iconMaker[i]);//终点
	              			}

	              		}
	              	}
	              }

5.把标注点用线连接起来。

              //连线部分 轨迹
              function showLine() {
              	var line;
              	var points = [];
              	for (var i = 0; i < lnglats.length; i = i + 1) {
              		points.push(new TLngLat(lnglats[i].L, lnglats[i].B));
              	}
              	line = new TPolyline(points, {
              		strokeColor: "green",
              		strokeWeight: 1,
              		strokeOpacity: 1
              	});
              	map.addOverLay(line);
              }

再依次调用              loadMap(); loadTrack(); showLine();就可以了。注意都要在页面加载完之后运行,或者把代码放到页面底部去。


天地图坐标轨迹效果图:



到这里,我们就实现了在天地图上显示坐标轨迹。可以根据后台查询出来的数据在地图上显示轨迹。



项目下载地址:https://github.com/liusaint/tiandituMap

演示地址:http://runningls.com/demos/tianditu/index.html?to=loadtrack

更多天地图api运用的内容请关注本系列后续文章。转载请注明出处。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
根据引用[1]中提供的信息,以下是使用Vue和地图绘制轨迹的步骤: 1. 首先,你需要在地图官网注册账号并申请自己的API密钥。 2. 创建一个Vue项目,可以使用Vue CLI或其他方式创建。 3. 在你的Vue项目中的index.html文件中引入地图API,可以使用script标签引入,如下所示: ```html <script src="http://api.tianditu.gov.cn/api?v=4.0&tk=你的API密钥"></script> ``` 请将"你的API密钥"替换为你在地图官网申请的API密钥。 4. 创建一个名为map.vue的Vue组件文件,用于绘制地图轨迹。 5. 在map.vue文件中,使用地图API初始化地图,并添加地图容器,如下所示: ```html <template> <div id="mapContainer"></div> </template> <script> export default { mounted() { // 初始化地图 const map = new T.Map("mapContainer"); // 设置地图中心点和缩放级别 map.centerAndZoom(new T.LngLat(经度, 纬度), 缩放级别); } } </script> <style> #mapContainer { width: 100%; height: 400px; } </style> ``` 请将"经度"、"纬度"和"缩放级别"替换为你想要的地图中心点的经纬度和缩放级别。 6. 在map.vue文件中,使用地图API绘制轨迹,如下所示: ```html <template> <div id="mapContainer"></div> </template> <script> export default { mounted() { // 初始化地图 const map = new T.Map("mapContainer"); // 设置地图中心点和缩放级别 map.centerAndZoom(new T.LngLat(经度, 纬度), 缩放级别); // 创建轨迹线对象 const polyline = new T.Polyline([ [经度1, 纬度1], [经度2, 纬度2], [经度3, 纬度3], // 添加更多的轨迹点 ], { color: "#FF0000", // 设置轨迹线颜色 weight: 5 // 设置轨迹线宽度 }); // 将轨迹线添加到地图上 map.addOverLay(polyline); } } </script> <style> #mapContainer { width: 100%; height: 400px; } </style> ``` 请将"经度1"、"纬度1"、"经度2"、"纬度2"等替换为你的轨迹点的经纬度。 以上是使用Vue和地图绘制轨迹的基本步骤。你可以根据自己的需求进行进一步的定制和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值