地图上自定义标记点和轨迹线的实现

Posted BinWin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了地图上自定义标记点和轨迹线的实现相关的知识,希望对你有一定的参考价值。

了百度的地图开放平台,还是挺有意思的。这里记录一下标记点和线的方法,一是用来完善X-MagicBox-820的小项目(连载的项目记录),二是给自己留下点笔记,感兴趣的小伙伴也可以试着调试调试看。

先是标记点。假设已经做好了HTML页面和用于地图显示JavaScript脚本。老王将HTML和JavaScript做了解耦,方便业务的代码修改。关于画点,官方的文档很简练,只需三行代码即可:

 

var point = new BMapGL.Point(116.404, 39.915);   
var marker = new BMapGL.Marker(point);        // 创建标注   
map.addOverlay(marker);

 

 行代码就会看到默认的红点标记,作为懂一点技术的老王,一下子就想到了自动打点的方法。自动更新点的坐标值就可以了呗,于是修改了代码。

//每秒更新一个值
setInterval(function () {
//用来构造坐标的变量
  var data = [];
  data[0] = pointx;
  data[1] = pointy;
  
  //更新坐标值,测试是朝一个方向走
  pointy = pointy + 0.01;
  point.push(data);
  //标记坐标点
  marker = new BMapGL.Marker(new BMapGL.Point(point[point.length-1][0],point[point.length-1][1])); // 创建点 
  map.addOverlay(marker);
}, 1000); 

际效果什么样呢,老王录制了下来。这是默认的红点标记,还可以根据自己喜好修改点的图表,需要参考Icon类。老王暂时不做细化。

了标记的点,连线自然是没有问题了,两点确定一条线段呗。实际的行程不会像老王这样的示例那么笔直的朝着一个方向,尤其在商业街什么的地方。所以,折线段的方法是比较合适的。继续在刚才的代码中修改一下添加连线的语句。思路就是每秒增加一条新增点和前一个点之间的连线。

//在点数大于1个时才开始绘制线条
  if(point.length > 1){
    var polyline = new BMapGL.Polyline([
    //新增点的坐标 
      new BMapGL.Point(point[point.length-2][0],point[point.length-2][1]),
    //前一个点的坐标
      new BMapGL.Point(point[point.length-1][0],point[point.length-1][1]),
    ], {strokeColor:"red", strokeWeight:5, strokeOpacity:0.5});   //创建折线 
    //连接两个点就画了一条线
    map.addOverlay(polyline);
  }

旧可以看到效果的,加粗的红线就是轨迹:

里的折线可以分别设置描边粗细、颜色、填充颜色等内容。老王认为看到这里,大家应该都了然于心了。多的就不说了,欢迎关注微信公众号  懂一点技术的老王。

以上是关于地图上自定义标记点和轨迹线的实现的主要内容,如果未能解决你的问题,请参考以下文章

点和线之间的最短距离(Google Maps API问题?)

web技术分享| 高德地图实现自定义的轨迹回放

带有标记的Android谷歌地图片段

一个不得不说的地图软件《奥维互动地图》

如何在Google地图上自定义myLocationEnabled按钮?

如何更改谷歌地图标记上方的标题和片段设计