写的很烂,希望老师给点建议

写的很烂,希望老师给点建议

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>map</title>
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=3372147f68beda6d56a8f680ffb5cf03&plugin=AMap.Driving,AMap.Riding,AMap.Transfer"></script> 
<style>
body {
margin: 0;
padding: 0;
text-decoration: none;
}
li {
list-style: none;
}
#container{
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
.icon-wrap {
margin-left: 80px;
margin-top: 50px;
width: 300px;
height: 50px;
position:relative;
z-index: 3;
color:#fff;
text-align: center;
}
.icon {
height: 20px;
width: 20px;
display: inline-block;
margin-right: 60px;
cursor: pointer;
opacity: 0.2;
}
.icon:hover {
opacity: 0.6;
}
.icon-active {
opacity: 1;
}
#outerNode {
position: fixed;
top: 50px;
right: 20px;
width: 400px;
z-index: 999;
}
#startNode {
width: 300px;
height: 30px;
position:absolute;
padding-left: 20px;
top: 100px;
left: 50px;
z-index: 3;
background-color: #2b86f2;
border: none;
outline: none;
color: #fff;

}
#startNode:before {
content:"起";
width: 20px;
height: 20px;
display: inline-block;
position:absolute;
z-index: 5;
top: 20px;
left: 20px;
}
#endNode {
width: 300px;
height: 30px;
position:absolute;
padding-left: 20px;
top: 150px;
left: 50px;
z-index: 10;
background-color: #2b86f2;
border: none;
outline: none;
color: #fff;

}
.toBtn {
width: 80px;
height:30px;
position: absolute;
left: 300px;
top: 250px;
z-index: 10;
background-color: #2b80f0;
color: #fff;
border: none;
cursor: pointer;
}
.toBtn:hover {
opacity: 0.8;
}
.search {
width: 400px;
height: 300px;
padding-left: 30px;
position: absolute;
left: 20px;
top: 20px;
z-index: 2;
background-color: #3591ff;
}
input::-webkit-input-placeholder {
color: #fff;
}
</style>
</head>
<body>
<div id="container">
<ul class="icon-wrap">
<li class="icon fa fa-car icon-active"></li>
<li class="icon fa fa-bus"></li>
<li class="icon fa fa-bicycle"></li>
</ul>
<div class="search">
<input type="text" id="startNode" placeholder="请输入起点">
<input type="text" id="endNode" placeholder="请输入终点">
</div>
<button id="toBtn" class="toBtn">开车去</button>
<!-- 路线信息 -->
<div id="outerNode">
</div>
</div>
<script>
//模仿jQuery方法获取元素
var $ = function(selector){
/*string to array*/
var a = selector.split("");
//className
if (a[0] == '.') {
return document.querySelector(selector);
//id
} else if(a[0] == '#'){
//slice删去数组中的第一个
var b = a.slice(1),
//讲数组转成字符串
selector = b.join('');
return document.getElementById(selector);
}
};
//创建地图
var map = new AMap.Map('container',{
zoom:17,
center: [116.39, 39.9]
});

var search = $('.search')

var toBtn = $('.toBtn');
var LineWrap = $('.icon-wrap');
var LineBtn = $('.icon');
var list = LineWrap.querySelectorAll('li');

//出行方式
var mode = [
{
form:'Driving',
value:'开车去'
},{
form:'Transfer',
value:'坐车去'
},{
form:'Riding',
value:'骑车去'
}]


//添加索引
for(var i = 0; i < list.length;i++){
list[i].index = i;
};

var curIndex = 0;
LineWrap.addEventListener('click', function (e) {
var index = e.target.index;
if (isNaN(index)) return;
if (index == curIndex) return;

list[curIndex].classList.remove('icon-active');
list[index].classList.add('icon-active');

toBtn.innerHTML = mode[index].value;

curIndex = index;
});



        //清除&添加placeholder
        search.addEventListener('click', function (e) {
         e.target.placeholder = '';
        });
        startNode.onblur = function () {
         this.placeholder = "请输入起点"
        };
        endNode.onblur = function () {
         this.placeholder = "请输入终点"
        };


       toBtn.addEventListener('click', function (e) {
         //清除地图覆盖物
         map.clearMap();

         outerNode.innerHTML = '';

         var form = mode[curIndex].form;
         new AMap[form]({
map:map,
panel:'outerNode'
}).search([
{keyword:startNode.value,city:'北京'},
{keyword:endNode.value,city:'北京'}
], function (status, data) {
console.log(data)
});

        }
)





</script>
</body>
</html>

有两个问题
1. 本想用:before 为搜索框添加个伪类,写出"起"字,虽有标签出现但是没有显示。
2.http://img1.sycdn.imooc.com//climg/5e65b6c309a69a5707360541.jpg

红框所指的地方不知如何提前获取,这样直接写测试了一下好像也可以,并不妨碍搜索其他地区的路线,但是还是很好奇如何获取并传入?
如还有其他问题请老师一并指出,谢谢!

正在回答

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

2回答

同学你好,是的,需要传入城市名,向老师之前那样写的,测试的是城市到城市之间的。虽然同一城市也可以执行,但是这个不是特别的精准。

当前我们还没有办法根据输入的内容,获取当前的城市,这里一般默认填写的都是写死的。

祝学习愉快~

好帮手慕糖 2020-03-09 14:46:26

同学你好,关于你的问题,回答如下:

1、input设置伪类无法显示。因为设置的伪类是包裹在当前元素内的,渲染结构上时当前元素的子元素,而input是单标签,不能包裹伪类。建议:可以使用其他的方式。比如:使用span标签。

2、同学是想通过输入框获取吗?若是这样的话,可以获取下输入框内的值,例:

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

3、其他实现很好。

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

  • 提问者 10hours #1
    第一个问题明白了。但是第二个问题,city传入的值不应该是 "北京" 这样的城市名吗? 我的意思是怎么样获取到这个城市名,如果直接用getCity获取是有问题的,这个方法好像是根据当前中心点获取,如果搜的路线是其他城市,这个city值就有问题了。
    2020-03-09 14:52:59
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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