老师,为什么这种方法不起作用

来源:5-4 自由编程

青旗

2020-10-03 22:05:19

<!DOCTYPE html>

<html lang="zh-CN">


<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>高德地图 2</title>

    <script type="text/javascript"

        src="https://webapi.amap.com/maps?v=1.4.15&key=db69e57e184d4aee4e996eda5760b613&plugin=AMap.Autocomplete,AMap.PlaceSearch">

    </script>

    <style>

        * {

            margin: 0;

            padding: 0;

            list-style: none;

        }


        #container {

            width: 100%;

            height: 100%;

            position: absolute;

            top: 0;

            left: 0;

        }


        #setzoom,

        #setcenter {

            width: 400px;

            position: absolute;

            z-index: 2;

            top: 80px;

            left: 20px;

            border: 1px solid #ccc;

            box-shadow: 0 0 3px black;

            background: #fff;

            position: relative;

        }


        #node li {

            cursor: pointer;

        }


        #searchNode #setcenter {

            width: 280px;

            height: 30px;

            background: #fff;

            position: absolute;

            right: 20px;

            top: 20px;

        }


        .amap-icon img {

            width: 25px;

            height: 35px;

        }

    </style>

</head>


<body>

    <div id="container"></div>



    <script>

        var map = new AMap.Map('container', {

            zoom: 11,

            center: [108.94802400000003, 34.263161],


        });

        map.setDefaultCursor = 'pointer'

        var marker = new AMap.Marker({

            icon: "http://a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png", //标记的图标

            position: map.center, //标记的坐标

            offset: new AMap.Pixel(-20, -80) // 偏差值

        });

        var markNew = false;

        map.add([marker]);

        map.on('click', function (e) {

            this.remove([marker])

            var marker2 = new AMap.Marker({

                icon: "http://a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png", //标记的图标

                position: e.lnglat, //标记的坐标

                offset: new AMap.Pixel(-20, -80) // 偏差值

            });

            if (markNew) {

                map.remove([marker2]);

                console.log('marker2')

            } else {

                map.remove([marker]);

                console.log('marker')

            };

            map.add([marker2]);

            markNew = true;

        });

    </script>

</body>


</html>


写回答

1回答

樱桃小胖子

2020-10-08

同学你好,这是由于代码程序书写不正确导致的,同学的代码在第一次点击的时候,会移除marker,同时添加marker2,从第二次点击开始,每次代码执行到最后都会重新添加marker2,而点击最开始没有清除marker2的操作。就导致呈现的效果是没有清除掉。分析如下:

http://img.mukewang.com/climg/5f7e9523091bc4ac14070490.jpg

因此,可以修改成:

http://img.mukewang.com/climg/5f7ea02009b3ad2614170893.jpg

这样,点击的时候,不仅可以移除点击事件外默认显示的marker标记,也可以在每次点击的时候移除点击事件里面的marker。

希望可以帮到你,祝学习愉快!

0

0 学习 · 6815 问题

查看课程