百度地图绘制历史轨迹加标注,简易版

成品如下:

 

这是放在前端网页的div容器里,因为我的标注多,而且在虚拟机里,所以比较卡其实。

 API介绍说明

使用的是JS API,所以注意的是在百度地图webAPI找是找不到的

地图 JS API | 百度地图API SDK (baidu.com)https://lbsyun.baidu.com/index.php?title=jspopular3.0

 使用前需要读一下类参考,才会有理解

百度地图JSAPI 3.0类参考 (bcebos.com)https://mapopen-pub-jsapi.bj.bcebos.com/jsapi/reference/jsapi_reference_3_0.html

 

 本次使用的是:标注类,包括三类,建议去上面看这三类的参考方法,不然会很糊涂

Marker 表示地图上的点,可自定义标注的图标
文本 Label 表示地图上的文本标注,您可以自定义标注的文本内容
折线 Polyline 表示地图上的折线

JavaScript API - 标注 | 百度地图API SDK (baidu.com)https://lbsyun.baidu.com/index.php?title=jspopular3.0/guide/mark

 勿多言,代码

<!--html-->

    <div style = " position:fixed; top:420px;left:950px; background-color:bold; width:900px;height:385px; background-color:rgba(0,0,0,0.1); border-radius:12px" >

      <div id="allmap" style = "border-radius:12px"></div>
    </div>



<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=!!!!!!!!!!!!!!!!!"></script>

<script type="text/javascript">

//百度地图调用脚本

var map = new BMap.Map("allmap");
var point = new BMap.Point(116.404, 39.915);
map.centerAndZoom(point, 6);
map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放
var sy = new BMap.Symbol
    (BMap_Symbol_SHAPE_BACKWARD_OPEN_ARROW, {
    scale: 0.5,                     //图标缩放大小
    strokeColor:'#fff',             //设置矢量图标的线填充颜色(方向箭头)
    strokeWeight: '3',              //设置线宽
    });
var icons = new BMap.IconSequence(sy, '10', '30');


var arr = [['拍摄时间',['地址','省','市','县','位置'],[30.25877974229535, 120.16856505290376]],['拍摄时间',['地址','省','市','县','位置'],[30.234845676643793, 120.20532390477369]]   

//我的数据格式,是从百度地图API查询GPS,返回后自行处理的格式,可以按需换,
//实际我是用django的{
   
   {}}传参的赋值arr



console.log(arr);
var path = [];

for(var p in arr)
    {
    var point = new BMap.Point(arr[p][2][1],arr[p][2][0]);
    path.push(point);

    var label = new BMap.Label((Number(p)+1).toString());

    var marker = new BMap.Marker(point);
    marker.setLabel(label);
    marker.setTitle(arr[p][0] + "\n" + arr[p][1][0] + "\n" + arr[p][1][4]);//鼠标放标注上会有地址显示
    map.addOverlay(marker);
    }

var polyline = new BMap.Polyline(path, {strokeColor:"green", strokeWeight:6, strokeOpacity:1, icons:[icons]});


map.addOverlay(polyline);
</script>

 简易版学习代码,我的学习参考:(3条消息) 百度地图通过经纬度坐标绘制移动路径轨迹_fallwind_of_july的博客-CSDN博客_导入经纬度生成轨迹

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=这里输入你的ak秘钥"></script>
<title>route</title>
</head>
<body>
<div id="allmap"></div>
</body>
</html>
<script type="text/javascript">

var map = new BMap.Map("allmap");
var point = new BMap.Point(103.992351,30.77374);
map.centerAndZoom(point, 15);
var polyline = new BMap.Polyline([
  new BMap.Point(30.25877974229535, 120.16856505290376),
  new BMap.Point(30.234845676643793, 120.205323904773697),
  new BMap.Point(30.24458532732261, 120.1133204679477),
 
], {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5});
map.addOverlay(polyline);
</script>

更详细的参考:百度地图之多点步行路径连线问题 - 踏浪帅 - 博客园 (cnblogs.com) 

 注意,GPS位置坐标要换成百度地图坐标,不然画的有误差

#python

def wgs84tobaidu(x, y):
    data = str(x) + ',' + str(y)
    output = 'json'
    url = 'http://api.map.baidu.com/geoconv/v1/?coords=' + data + '&from=1&to=5&output=' + output + '&ak=!!!!!!!!!!!!!!!'
    req = urlopen(url)
    res = req.read().decode()
    temp = json.loads(res)
    baidu_x = 0
    baidu_y = 0
    if temp['status'] == 0:
        baidu_x = temp['result'][0]['x']
        baidu_y = temp['result'][0]['y']

    return baidu_x, baidu_y

猜你喜欢

转载自blog.csdn.net/qq_46513570/article/details/123976655