JS 百度地图 地图线路描绘

  JS 百度地图 地图线路描绘

  

<script type="text/javascript"
            src="http://api.map.baidu.com/api?v=3.0&ak=PlhFWpA02aoURjAOpnWcRGqw7AI8EEyO"></script>
<div id="allmap"></div>
 // 百度地图API功能
    var map = new BMap.Map("allmap");
    map.centerAndZoom(new BMap.Point(113.350512, 23.191744),12);
    map.enableScrollWheelZoom();

    var data=[
        {lng:"113.350512",lat:"23.191744"},
        {lng:"113.364512",lat:"23.182644"},
        {lng:"113.375512",lat:"23.173544"},
        {lng:"113.386512",lat:"23.164344"},
        {lng:"113.397512",lat:"23.155444"},
        {lng:"113.318512",lat:"23.136244"},
        {lng:"113.329512",lat:"23.147144"}
    ]
    var pois1 = [];
    (data).forEach(function (item) {
        pois1.push(new BMap.Point(item.lng, item.lat));
    })

    var sy = new BMap.Symbol(BMap_Symbol_SHAPE_BACKWARD_OPEN_ARROW, {
        scale: 0.4,//图标缩放大小
        strokeColor: '#fff',//设置矢量图标的线填充颜色
        strokeWeight: '2',//设置线宽
    });
    var icons = new BMap.IconSequence(sy, '', '5%');
    var point = pois1[Math.ceil(pois1.length / 2)];
    map.centerAndZoom(point, 12);

    //描绘线
    var line=new BMap.Polyline(addPolyline(pois1,"red",5));
    function addPolyline(pois, color, width) {
        var polyline = new BMap.Polyline(pois, {
            enableEditing: false,//是否启用线编辑,默认为false
            enableClicking: true,//是否响应点击事件,默认为true
            strokeWeight: width,//折线的宽度,以像素为单位
            strokeOpacity: 0.8,//折线的透明度,取值范围0 - 1
            strokeColor: color//折线颜色
        });

        map.addOverlay(polyline);          //增加折线
        return polyline;
    };
    var startPng=("./start.png"),endPng=("./end.png"),pointY=("./poscar.png");

    SMSSMAPGetOrders(data,'',map);

    //描绘开始-结束图标
    setTimeout(function () {
        if (data.length > 1) {
            var length = data.length - 1;
            SMSSMAPAddCars(map, data[0].lng, data[0].lat, startPng, 18, 18, 0);
            SMSSMAPAddCars(map, data[length].lng, data[length].lat, endPng, 18, 18, 0);
        } else {
            SMSSMAPAddCars(map, data[0].lng, data[0].lat,startPng, 18, 18, 0);
        }
    }, 500);

    //描绘途径点--图标
    function SMSSMAPGetOrders(pois1, carInfo, mapCity) {
        for (var i = 0; i < pois1.length; i++) {
            if (pois1[i].lng && pois1[i].lng != "") {
                SMSSMAPAddCars(mapCity, pois1[i].lng, pois1[i].lat, pointY, 15, 15, 0)
            }
        }
    };

    //生成图标
    function SMSSMAPAddCars(map, lng, lat, src, w, h, index) {
        //经纬度转换
        var point = new BMap.Point(lng, lat);
        var myIcon = SMSSMAPICON(src, w, h, index);
        // 创建标注对象并添加到地图
        var marker = new BMap.Marker(point, {icon: myIcon});
        marker.setTitle("");
        map.addOverlay(marker);

    };

    //设置图标格式
    function SMSSMAPICON(src, w, h, index) {
        var myIcon = new BMap.Icon(src, new BMap.Size(w, h), {
            anchor: new BMap.Size(10, 10),
            imageOffset: new BMap.Size(0, 0 - index * h),   // 设置图片偏移
            // 设置图片大小
            imageSize: new BMap.Size(w, h)
        });

        return myIcon;
    };
原文地址:https://www.cnblogs.com/nelsonlei/p/11661154.html