百度地图API绘线


我想用js获取数据库里的点数据,然后用Polyline方法在地图上画出一条线

var arr1=[];
$.getJSON('Handler.ashx/ProcessRequest', function (json)
                {
                    var obj;
                        for (var i=0; i < getJsonLength(json) ; i++)
                        {
                            obj = new BMap.Point(json[i].LNG, json[i].LAT);
                            arr1.push(obj);
                        }
                    }
                );
function getJsonLength(jsonData)
    {
        var jsonLength = 0;
        for (var item in jsonData)
        { jsonLength++; }
        return jsonLength;
    }
var polyline = new BMap.Polyline(arr1, { strokeColor: "blue", strokeWeight: 3, strokeOpacity: 0.5 });
 map.addOverlay(polyline);
(map实例化过了,我就不在这里贴出来了)

用上面代码结果地图上什么也没有,而用下面代码手动来写,地图就有线出现。 求教是怎么一回事???(数据库数据没问题的)

var arr2 = [];
    arr3.push(new BMap.Point(x[1],y[1]));
    arr3.push(new BMap.Point(x[2],y[2]));
    arr3.push(new BMap.Point(x[3],y[3]));
    arr3.push(new BMap.Point(x[4],y[4]));
    arr3.push(new BMap.Point(x[0],y[0]));
    var polyline = new BMap.Polyline(arr2, { strokeColor: "blue", strokeWeight: 3, strokeOpacity: 0.5 })
    map.addOverlay(polyline);

2 个解决方案

#1


var arr1=[];
$.getJSON('Handler.ashx/ProcessRequest', function (json)
                {
                    var obj;
                        for (var i=0; i < getJsonLength(json) ; i++)
                        {
                            obj = new BMap.Point(json[i].LNG, json[i].LAT);
                            arr1.push(obj);
                        }

var polyline = new BMap.Polyline(arr1, { strokeColor: "blue", strokeWeight: 3, strokeOpacity: 0.5 });
 map.addOverlay(polyline);

                    }
                );
function getJsonLength(jsonData)
    {
        var jsonLength = 0;
        for (var item in jsonData)
        { jsonLength++; }
        return jsonLength;
    }


红色2句放进回调里面,要不执行的时候ajax都没返回,当然没有反应

#2


引用 1 楼 showbo 的回复:
var arr1=[];
$.getJSON('Handler.ashx/ProcessRequest', function (json)
                {
                    var obj;
                        for (var i=0; i < getJsonLength(json) ; i++)
                        {
                            obj = new BMap.Point(json[i].LNG, json[i].LAT);
                            arr1.push(obj);
                        }

var polyline = new BMap.Polyline(arr1, { strokeColor: "blue", strokeWeight: 3, strokeOpacity: 0.5 });
 map.addOverlay(polyline);

                    }
                );
function getJsonLength(jsonData)
    {
        var jsonLength = 0;
        for (var item in jsonData)
        { jsonLength++; }
        return jsonLength;
    }


红色2句放进回调里面,要不执行的时候ajax都没返回,当然没有反应


谢谢谢谢,我后来发现还有个问题,就是obj写的不对应该用eval函数转成对象。
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告