前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在地图上绘制路线图

在地图上绘制路线图

作者头像
zstar
发布2022-06-14 09:18:52
7640
发布2022-06-14 09:18:52
举报
文章被收录于专栏:往期博文往期博文

最近做个项目,官方给了车的一些经纬度数据,为了看的更清楚,需要把数据标注在地图上 想到了两套方案,第一种采用python的folium库 结果遇到问题,数据一多,绘画出来的速度很慢,而且它的某JS插件还有问题,可能要访问国外网站 最后采用百度地图API+前端实现

实现代码

代码语言:javascript
复制
<!DOCTYPE html>  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<title>运输轨迹图</title>  
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"></script>  
</head>  
<body>  
<div  style="width:1000px;height:800px;border:1px solid gray" id="container"></div>
  
<script type="text/javascript">  
    window.onload = function(){
    	var map = new BMap.Map("container");  
        map.centerAndZoom(new BMap.Point(108.847098,34.553311), 19);  
        map.addControl(new BMap.NavigationControl());               // 添加平移缩放控件  
        map.addControl(new BMap.ScaleControl());                    // 添加比例尺控件  
        map.addControl(new BMap.OverviewMapControl());              //添加缩略地图控件  

        map.clearOverlays();                        //清除地图上所有的覆盖物  
        var driving = new BMap.DrivingRoute(map);    //创建驾车实例  
    	// 坐标点数据
    	var pointArr = [
		{lng:108.846778,lat:34.553381},
            {lng:108.913278,lat:34.56822},
            {lng:108.965431,lat:35.067111},
            {lng:108.970378,lat:35.28905},
            {lng:109.062676,lat:35.459776},
            {lng:109.150031,lat:35.753583},
            {lng:109.162038,lat:36.13323},
            {lng:109.210436,lat:36.275681},
            {lng:109.530575,lat:36.374983},
            {lng:109.524826,lat:36.311185},
            {lng:109.48606,lat:36.065591},
            {lng:109.472351,lat:35.97982},
            {lng:109.416193,lat:35.785386},
            {lng:109.218855,lat:35.591348},
            {lng:109.00506,lat:35.229895},
            {lng:109.000183,lat:35.096543},
            {lng:108.948958,lat:35.043541},
            {lng:108.87274,lat:34.955763},
            {lng:108.918626,lat:34.829366},
            {lng:108.917861,lat:34.710648},
            {lng:108.906966,lat:34.557451},
            {lng:108.675451,lat:34.441986},
            {lng:109.111373,lat:35.530833},
            {lng:109.150411,lat:35.754528},
            {lng:109.42088,lat:35.831146},
            {lng:109.416193,lat:35.785386},
            {lng:109.23994,lat:35.651303},
            {lng:108.794355,lat:34.442668},
            {lng:108.804498,lat:34.492978},
            {lng:109.314386,lat:36.316936}];
		// 生成坐标点
		var trackPoint = [];
		for (var i = 0, j = pointArr.length; i < j; i++) {
			trackPoint.push(new BMap.Point(pointArr[i].lng, pointArr[i].lat));
		}


    	for (var i = 0; i < trackPoint.length; i++) {
        	if(i != trackPoint.length -1 ){
        		driving.search(trackPoint[i], trackPoint[i+1]);
           	}
    	}
        driving.setSearchCompleteCallback(function(){  
            var pts = driving.getResults().getPlan(0).getRoute(0).getPath();    //通过驾车实例,获得一系列点的数组  
      
            var polyline = new BMap.Polyline(pts);       
            map.addOverlay(polyline);  

        	// 画图标、想要展示的起点终点途经点
        	for (var i = 0; i < trackPoint.length; i++) {
        		var lab;
            	if(i == 0){
            		lab = new BMap.Label("起点",{position:trackPoint[i]});
                }else if(i == trackPoint.length - 1){
                	lab = new BMap.Label("终点",{position:trackPoint[i]});
                }else{
                	/* lab = new BMap.Label("途径点",{position:trackPoint[i]}) */
                }
        	    var marker = new BMap.Marker(trackPoint[i])
        	    map.addOverlay(marker);
        	    map.addOverlay(lab);
        	}
        	map.setViewport(trackPoint);  
        });  
    }
</script>  

</body>  
</html>  
</body>
</html>
效果
效果

效果如图 注意离线画图不需要在百度控制台创建应用

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档