百度地图API 的折线问题,javascript里面 ,var polyline = new BMap.Polyline,如何循环的添加点呢?

newBMap.Point(116.401801,39.912114),newBMap.Point(116.403803,39.912336),newBMap.Point... new BMap.Point(116.401801,39.912114),
new BMap.Point(116.403803,39.912336),
new BMap.Point(116.404804,39.912447),
new BMap.Point(116.405905,39.918558),
new BMap.Point(116.418804,39.926123),
new BMap.Point(116.419184,39.929323),
new BMap.Point(116.423184,39.930323)
], {strokeColor:"blue", strokeWeight:3, strokeOpacity:0.5});
map.addOverlay(polyline);
我想把这些点从2个下拉框里面读出来,一个个读是可以的,但是怎么利用循环一样的东西读呢
展开
 我来答
jackwind1987
2013-01-11 · TA获得超过2738个赞
知道大有可为答主
回答量:1268
采纳率:50%
帮助的人:502万
展开全部
必须有一个数组或者集合的东西存储这些点的坐标,看这些点的坐标是从哪里来的了,如果是存在某个地方你读出来的,比如数据库或者cookie里,那么这样做就很自然了,比如说存在一个二维数组中。
var points = [[1,2],[3,4],[5,6],[7,8]];
var a = [];
for (p in points) {
a.push(new BMap.Point(p[0],p[1]));
}
虽然不清楚那个API,但看你的写法,最后BMap.Point要存在一个数组里,其实完全可以读出来的时候就直接放在a数组里。
.....a, {strokeColor:"blue", strokeWeight:3, strokeOpacity:0.5});
若是你的程序要通过用户操作在地图上一个一个加点,那么循环就不合适了,一个一个加就好了。
若你只想把这些点存在代码里,那这么写完全可以,没有更简单的方法,只会越搞越复杂。
追问

的确只能一个个加。我是从数据库里读出来放到下拉框里面显示,然后javascript里面再读出来添加到polyline,但是polyline是划线,不能跟数组一样。但是想到它这么多组数据画折线,其实就是一条一条的线连起来,所以我用下面方法解决了。但是会有什么bug吗?

追答
我查过API了,折线不就是有多个点的线么?
完全可以这么写啊:
var polylinePointsArray = [];
for (i - 0; i < len; i++) {
var x = DropDownList_x.options[i].value;
var y = DropDownList_y.options[i].value;
polylinePointsArray[i] = new BMap.Point(x,y);
}
polyline = new BMap.Polyline(polylinePointsArray, {strokeColor:"blue", strokeWeight:3, strokeOpacity:0.5})
map.addOverlay(polyline);
你那样写会多加很多不必要的点,而且对API调用了过多次数,会影响性能。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式