利用高德地图通过给定坐标点画带箭头方向的路径

这是到新公司以后接到的第一个任务(测试任务),嘿嘿,第一次画地图,一开始整个人都方了。。。方过了一个周末,还好两天差不多就弄出来了。感谢互联网啊,让我这种渣渣得以继续生存,但是也意识到自己编码能力真的需要努力。废话不多说了,来上需求和实现代码吧。

【需求】

通过给定的经纬度坐标点来自定义规划线路,要求,道路中有方向指向标志,如图:

【思路】

1.渲染地图进来

2.在地图上选取你要的坐标点,并在地图上打上坐标点

3.根据获取的坐标点经纬度连线,并选择箭头属性为true

【代码】

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
    <title>打点画线</title>
    <link rel="stylesheet" href="http://cache.amap.com/lbs/static/main1119.css"/>
    <style>
        .marker {
            color: #ff6600;
            padding: 4px 10px;
            border: 1px solid #fff;
            white-space: nowrap;
            font-size: 12px;
            font-family: "";
            background-color: #0066ff;
        }
    </style>
    <script src="http://webapi.amap.com/maps?v=1.3&key=amapA8fIRfAbK"></script>
    <script type="text/javascript" src="http://cache.amap.com/lbs/static/addToolbar.js"></script>

</head>
<body>

<div id="container"></div>
<div  class="button-group">
    <input type="button" class="button" value="添加点标记覆盖物" id="addMarker"/>
    <input type="button" class="button" value="更新点标记覆盖物" id="updateMarker"/>
    <input type="button" class="button" value="删除点标记覆盖物" id="clearMarker"/>
    <input type="button" class="button" value="绘制轨迹" id="drawLine" />
</div>
<script>
    var marker, map = new AMap.Map("container", {
        resizeEnable: true,
        center: [116.397428,39.90923],
        zoom: 13
    });
    //AMap.event.addListener(map,"complete",completeEventHandler);//加载完成后

    AMap.event.addListener(map,‘click‘,getLnglat); //点击获取坐标事件

    AMap.event.addDomListener(document.getElementById(‘addMarker‘), ‘click‘, function() {
        addMarker();
    }, false);
    AMap.event.addDomListener(document.getElementById(‘updateMarker‘), ‘click‘, function() {
        marker && updateMarker();
    }, false);
    AMap.event.addDomListener(document.getElementById(‘clearMarker‘), ‘click‘, function() {
        if (marker) {
            marker.setMap(null);
            marker = null;
        }
    }, false);
    AMap.event.addDomListener(document.getElementById(‘drawLine‘),‘click‘,function(){
        drawLine();
    },false);

        //获取坐标
    function getLnglat(e){
        var x = e.lnglat.getLng();
        var y = e.lnglat.getLat();
        alert(x+","+y);
    };

    // 实例化点标记
    function addMarker() {
        if (marker) {
            return;
        }
        marker = new AMap.Marker({
            icon: "http://webapi.amap.com/theme/v1.3/markers/n/mark_b.png",

            position: [116.397428,39.90923]
        });
        marker.setMap(map);
    }

    function updateMarker() {
        // 自定义点标记内容
        var markerContent = document.createElement("div");

        // 点标记中的图标
        var markerImg = document.createElement("img");
        markerImg.className = "markerlnglat";
        markerImg.src = "http://webapi.amap.com/theme/v1.3/markers/n/mark_r.png";
        markerContent.appendChild(markerImg);

        // 点标记中的文本
        var markerSpan = document.createElement("span");
        markerSpan.className = ‘marker‘;
        markerSpan.innerHTML = "end";
        markerContent.appendChild(markerSpan);

        marker.setContent(markerContent); //更新点标记内容
        marker.setPosition([116.397428,39.90923]); //更新点标记位置
    }

    //轨迹绘制
    //地图图块加载完毕后执行函数
function drawLine(){
    marker = new AMap.Marker({
        map:map,
        //draggable:true, //是否可拖动
        position:new AMap.LngLat(116.396913,39.908111),//基点位置

        offset:new AMap.Pixel(-13,-27), //相对于基点的位置

        autoRotation:true
    });

         marker = new AMap.Marker({
        map:map,
        //draggable:true, //是否可拖动
        position:new AMap.LngLat(116.420087,39.908374),//基点位置

        offset:new AMap.Pixel(-13,-27), //相对于基点的位置
        autoRotation:true
    });

        marker = new AMap.Marker({
        map:map,
        //draggable:true, //是否可拖动
        position:new AMap.LngLat(116.432303,39.909320),//基点位置

        offset:new AMap.Pixel(-13,-27), //相对于基点的位置
        autoRotation:true
    });

        marker = new AMap.Marker({
        map:map,
        //draggable:true, //是否可拖动
        position:new AMap.LngLat(116.434679,39.908769),//基点位置

        offset:new AMap.Pixel(-13,-27), //相对于基点的位置
        autoRotation:true
    });

            marker = new AMap.Marker({
        map:map,
        //draggable:true, //是否可拖动
        icon:"http://webapi.amap.com/theme/v1.3/markers/n/mark_r.png",//终点红色
        position:new AMap.LngLat(116.434335,39.924568),//基点位置
        //title:"116.434335,39.924568",
        offset:new AMap.Pixel(-13,-27), //相对于基点的位置
        autoRotation:true
    });

    //实例化经纬度
    //起点
    var lngX = 116.396913;
    var latY = 39.908111;
    lineArr = new Array();
    lineArr.push(new AMap.LngLat(lngX,latY));

        lineArr.push(new AMap.LngLat(116.420087,39.908374));//第二个点

        lineArr.push(new AMap.LngLat(116.432303,39.909320));//第三个点
        lineArr.push(new AMap.LngLat(116.434679,39.908769));//第四个点
        lineArr.push(new AMap.LngLat(116.434335,39.924568));//第五个点

      //绘制轨迹
    var polyline = new AMap.Polyline({
        map:map,
        path:lineArr,
        strokeColor:"#0066ff",//线颜色
        strokeOpacity:1,//线透明度
        strokeWeight:5,//线宽
        strokeStyle:"solid",//线样式
        showDir: true//是否显示箭头

    });
    //显示坐标
/*    function showLnglat(){
        var infoBox = [];
        info.push("116.434335,39.924568")
        InfoWindow.open(map,new AMap.LngLat(116.434335,39.924568));
    }*/

    map.setFitView();
  }

</script>
</body>
</html>

【效果图】

【参考】

1.酸奶小妹:有一系列入门实用教程案例。http://www.cnblogs.com/milkmap/p/3727842.html 

2.打点画线重点代码块。 http://www.myexception.cn/internet/1695984.html

时间: 2024-10-10 23:59:16

利用高德地图通过给定坐标点画带箭头方向的路径的相关文章

利用高德地图javascriptAPI做一个自己的地图

最近由于项目中需要制作一个地图,用来选择活动地点,我就花了两天利用高德地图的javascriptAPI自制了一个地图的demo.在这了记录一下我学习的过程. 一.进入高德地图官网,再找到高德地图的开放平台,我是做前端的,所以使用的是javascriptAPI. 地图的功能很多,使用API可以自己定制自己想要的功能.在使用前需要自己申请一个Key,引入API的时候会用到这个key. 二.详细看一下左边的那一列各个里面的内容,看完了基本就知道怎么回事了,它提供的javascriptAPI其实就是一个

利用高德地图官方提供的API实现模拟定位的功能

使用高德地图API需要申请一个开发者ID号以及我所用的相关资源:  http://pan.baidu.com/disk/home?fr=ibaidu 该文件夹中有一个官方文档,AMap_IOS_API_Guid,提供了使用方法供开发者参阅. 利用高德地图官方提供的API实现模拟定位的功能,布布扣,bubuko.com

【视频教学】如何利用高德地图IOS SDK进行开发?

Step1:使用IOS SDK可以做什么高德地图 iOS SDK 是一套基于 iOS 5.1.1 及以上版本的地图应用程序开发接口.通过该接口,用户可使用高德地图数据和服务轻松构建功能丰富.交互性强的地图应用.地图 iOS SDK 不仅包含构建地图的基本接口,还提供了诸如本地搜索.路线规划.公交搜索以及坐标地址搜索等服务,用户可以根据自己的需要进行选择.高德地图 iOS SDK的服务是免费的,任何非盈利性网站均可使用.您需要先申请Key,才能使用该服务.  Step2:视频学教程如何使用IOS

高德地图根据关键词坐标拾取小工具

今天早上在写代码的时候,需要用到地图坐标拾取工具,我们用的是搞的地图,在高德地图API官方网站中没有找到相关的坐标拾取工具.在网上找到这么个小工具,与大家分享下! CSS 1 html { background-color: #fff; } 2 body, div, h1, h2, h3, h4, ul, li, form, input, dl, dt, dd, p { margin: 0; padding: 0; font-family: 微软雅黑; } 3 h3 { +font-size:1

利用高德地图完成用户地图选址,包括搜索位置和标签固定居中

这两天一直捣鼓着地图的选址功能,需要达到的要求是:1,能用户定位  2,大头针固定在地图中心,拖动地图停止后获取到该大头针的位置信息    3,能通过搜索框搜索到我们输入的地址 主要思路:大头针分为两个   一个是用户的位置大头针  另一个是所选取的位置的大头针(包括拖动后的大头针和搜索功能查找到位置的大头针,公用一个大头针  )并且两个大头针都成为控制器器属性. 我使用到的高德地图sdk是: 'AMap3DMap' , '5.2.1' #高德3D地图 'AMapSearch' , '5.2.1

【转】根据高德地图得出的坐标算出两点之间的距离

摘自 http://blog.csdn.net/u012251421/article/details/41242891 public static string GetDistance(double n1, double e1, double n2, double e2) { double lon1 = (Math.PI / 180) * n1; double lon2 = (Math.PI / 180) * n2; double lat1 = (Math.PI / 180) * e1; dou

java利用高德地图API将经纬度转换为具体的位置显示

项目有个需求,页面显示的时候,数据库该字段显示的经纬度,如何将经纬度转换为具体的位置并显示呢?核心点如下: 原文地址:http://blog.51cto.com/12237592/2118944

IOS高德地图开发

博客链接:www.goofyy.com/blog 或者百度搜索 goofyy 玩了苹果原生地图,觉得IOS8的原生还是差了那么一点点,对比了一下腾讯的SDK和高德的SDK,还是觉得高德更碉些,第三方地图就先拿高德地图开刀了. 使用高德SDK,首先到高德官网注册一个开发者账号,获取开发者KEY.这些高德LBS开放平台都是有详细教程.小编编就不在这里赘余啦.首先是导入库和开发前简单设置. 高德官网下载高德开发的SDK导入.具体导入的库如下 1.引入地图库&搜索库 左侧目录中选中工程名,在 TARGE

高德地图 API 显示跑步路线

模仿对象 此前在尝试制作时,我采用 Nike+ 官网效果为模板仿制.目前 Nike+ 已经升级,看不了之前版本的样式及动态效果,暂且看看样式区别不大的 Nike+ Run Club App 地图,动画部分依然以此前 Nike+ 官网效果为准. 分析一下,想要仿制跑步路线图,其中有两个难点,第一个是画线动态效果,第二个是路线的渐变效果.画线动画是跑步过程的表现,渐变效果则是实时配速的表现. 光看都能感觉到渐变效果比较难,故这边就先不模仿它,搞定画线动画先.之前在 Nike+ 网页端,还在终点显示了