老师帮我看下

老师帮我看下

虽然可以执行,但是会一直报错Uncaught RangeError: Maximum call stack size exceeded

    at Object.g.c.add.g.BuryPoint.add

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>高德地图</title>
   <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
   <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
   <style>
       * {
           margin: 0;
           padding: 0;
       }

       #container {
           width: 100%;
           height: 100%;
           position: absolute;
           left: 0;
           right: 0;
       }

       #searchNode {
           position: absolute;
           left: 10px;
           top: 10px;
           background-color: dodgerblue;
           padding: 10px 30px;
           opacity: .8;
           height: 130px;
       }

       input {
           width: 200px;
           height: 25px;
           border: none;
           outline: none;
           background-color: #4682B4;
           display: block;
           margin-top: 10px;
           text-indent: 10px;
       }

       .icon i {
           margin-left: 35px;
           color: #fff;
           opacity: .5;
       }
       .icon .active{
           opacity: 1;
       }
       #searchBtn{
           border: none;
           outline: none;
           color: #fff;
           background-color:  #00BFFF;
           padding: 5px 20px;
           margin-top: 10px;
           float: right;

       }
       .cf::after{
           content: ' ';
           display: block;
           clear: both;
       }
       #panel{
           position: absolute;
           top:160px;
           left: 10px;
       }
   </style>
</head>
<body>
<div id="container"></div>

<div id="searchNode" class="cf">
   <div class="icon"><i class="fa fa-car active"></i><i class="fa fa-bus"></i><i class="fa fa-bicycle"></i></div>
   <input type="text" id="inputStart">
   <input type="text" id="inputEnd">
   <button id="searchBtn"></button>
</div>
<div id="panel"></div>

</body>
<script>
   window.onload = function () {
       var map = new AMap.Map('container', {
           zoom: 10,//初始地图级别 越大越清晰
           center: [116.65918, 39.878151]//中心位置
       });
       var $icon=$('.fa');
       var $searchBtn=$('#searchBtn');
       var $inputStart=$('#inputStart');
       var $inputEnd=$('#inputEnd');
       var searcheData = [{
           type: '驾车',
           tool:'Driving'
       }, {
           type: '公交',
           tool:'Transfer'
       }, {
           type: '骑行',
           tool:'Riding'
       }]
       function init(i) {
           $icon.removeClass('active');
           $icon.eq(i).addClass('active');
           $searchBtn.text(searcheData[i].type);
           $searchBtn.data('search-tool',searcheData[i].tool);
       }
       //初始化
       init(0);
       //确定方案
       $icon.on('click',function () {
           var currentIndex=$(this).index();
           init(currentIndex);
           $searchBtn.data('search-tool',searcheData[currentIndex].tool);

       })
       console.log( $searchBtn.data('search-tool'))
       //查询
       $searchBtn.on('click',function () {
           if ($inputStart.val()===""||$inputEnd.val()==="") return;
           map.clearMap();
            var tool= $(this).data('search-tool')
          new AMap[tool]({
               map:map,
               panel:'panel',
               city:'beijing',//城市
               size:1 //大小
           }).search([
               {keyword:$inputStart.val(),city:'北京'},
               {keyword:$inputEnd.val(),city:'北京'}
           ],function(status,data){
               console.log(data);
           })
       })
   }
   var js_Map = document.createElement('script');
   js_Map.src = "https://webapi.amap.com/maps?v=1.4.15&key=403c2522da6c56b5d0d07dd7889dbaa6&callback=onload&plugin=AMap.Driving,AMap.Transfer,AMap.Riding";
   document.head.appendChild(js_Map)
</script>
</html>

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
好帮手慕久久 2020-06-09 09:29:44

同学你好,目前有“618”的优惠活动:

http://img1.sycdn.imooc.com//climg/5edee5dd099b51ed18940039.jpg

领券后有优惠,同学可以查看一下。

祝学习愉快!

  • 提问者 vivi_li #1
    哎 优惠完也没一起买便宜
    2020-06-09 09:30:40
  • 好帮手慕久久 回复 提问者 vivi_li #2
    很抱歉同学,目前只有这个活动,没有办法一起买了。 祝学习愉快!
    2020-06-09 13:38:19
提问者 vivi_li 2020-06-08 18:18:03

😂😂😂我从官网复制的,还再三确定了没看错,官网异步加载有这个方法,还是我写的方式不对?

好帮手慕久久 2020-06-08 18:06:43

同学你好,问题解答如下:

地图插件加载完成后的回调函数,同学将其取名为onload:

http://img1.sycdn.imooc.com//climg/5ede0c8e09ef044a63640572.jpg

而window.onload本身是window的事件,所以页面加载完成,会执行两遍window.onload,如下:

http://img1.sycdn.imooc.com//climg/5ede0cdf09277b4907980247.jpghttp://img1.sycdn.imooc.com//climg/5ede0ce209cdc66204910202.jpg

执行两遍window.onload,就会给$searchBtn绑定两遍click事件,因此,点击一次$searchBtn,就会执行两次事件处理函数,如下:

http://img1.sycdn.imooc.com//climg/5ede0cf3090e65a812330260.jpghttp://img1.sycdn.imooc.com//climg/5ede0cf809fbd97c05330195.jpg

所以对应会执行两次new AMap,因此报错。

可以将回调函数的名字改成别的,如下:

http://img1.sycdn.imooc.com//climg/5ede0d0309f9ea6b10860434.jpg

如果我的回答帮到了你,欢迎采纳,祝学习愉快!

  • 提问者 vivi_li #1
    知道啦,官网l是大写⊙﹏⊙
    2020-06-08 18:19:56
  • 好帮手慕久久 回复 提问者 vivi_li #2
    解决问题就好,祝学习愉快!
    2020-06-08 18:34:47
  • 提问者 vivi_li 回复 好帮手慕久久 #3
    老师顺便问个问题,我们买课程稍微早一点的 ,现在买新版最后阶段的node.js可以有优惠么?本来可以一起买的啊,单独买贵啊
    2020-06-09 08:58:54
提问者 vivi_li 2020-06-08 17:47:06

很奇怪 我每次点击 这个事件总会执行两次

  • 对的,是执行两次,可以看下老师上面的回复。
    2020-06-08 18:08:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师