addEventLinstener监听Marker之后重复

百度地图用addEventLinstener监听几个marker之后,再把几个marker连接起来结果就报错了


<script Language="JavaScript" type="text/javascript">
var id = <?php echo json_encode($id);?>;
var time = <?php echo json_encode($time);?>;
var height = <?php echo json_encode($height);?>;
var latitude = <?php echo json_encode($latitude);?>;
var longitude = <?php echo json_encode($longitude);?>;
var date = <?php echo json_encode($date);?>;
var speed = <?php echo json_encode($speed);?>;
var rownum = <?php echo json_encode($rownum);?>;

var Point = new Array();

for(var i=0;i<rownum;i++) {
    Point.push(new BMap.Point(longitude[i], latitude[i]));
}
function transcoord() {
    translateCallback = function (data) {
        var transPoint = new Array();
        var Marker = new Array();
        if (data.status === 0) {
            for(var i=0;i<rownum;i++) {
                transPoint[i]=data.points[i];
                Marker[i]=new BMap.Marker(data.points[i]);
                map.addOverlay(Marker[i]);

                function Listener() {
                    //var thePoint = transPoint[i];
                    //var theMarker = Marker[i];
                    var theTime = "00:00:00";
                    Marker[i].addEventListener("click",function(){
                        showInfo(this,theTime);
                    });
                }
                Listener();
            }

            function showInfo(thisMaker,time){
                var sContent =
                    "<ul style='margin:0 0 5px 0;padding:0.2em 0'>"
                    +"<li style='line-height: 10px;font-size: 15px;'>"
                    +"<span style='width: 50px;display: inline-block;'>000:</span>" + "000" + "</li>"
                    +"<li style='line-height: 26px;font-size: 15px;'>"
                    +"<span style='width: 50px;display: inline-block;'>time:</span>"+time +"</li>"
                    +"</ul>";
                var infoWindow = new BMap.InfoWindow(sContent);  // 创建信息窗口对象
                thisMaker.openInfoWindow(infoWindow);   //图片加载完毕重绘infowindow
            }

            function drawline() {
                var polyline = new Array();
                for(var k=0;k<rownum;k++){
                    polyline[k] = new BMap.Polyline([transPoint[k],transPoint[k+1]]
                        , { strokeColor:"green",//设置颜色
                            strokeWeight:3, //宽度
                            strokeOpacity:0});//透明度
                    map.addOverlay(polyline[k]);
                }
            }

            drawline();
        }else{
            alert(data.status);
        }
    }

    var convertor = new BMap.Convertor();
    convertor.translate(Point, 1, 5, translateCallback);

}
transcoord();

</script>

运行之后一开始是这样的
图片描述

然后点击marker之后,,不会有点击事件,而且又画了一段一样的轨迹出来。。。
图片描述

浏览器疯狂报错
图片描述

求解

但是如果在drawline那里不用循环只画其中一段轨迹的话,不会报错,点击事件也是正常的

阅读 3.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题