遇到点小问题不会解决了,麻烦老师解决一下,非常感谢!

来源:3-12 自由编程

bao_

2021-01-05 11:37:06

问题1:兴趣点范围,搜索下一个地方怎样清空上一次搜索的痕迹


问题2:地点搜索地点的时候偶尔会报错 能搜索到但是偶尔获取不到

116行

WQ = data.tips[0].location.Q;

问题3:有没有需要优化的地方,还麻烦老师批评指正,非常感谢

相关截图:

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

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

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


相关代码:

​<style type="text/css">
*{
padding: 0px;
margin: 0px;
}
#container
{
width:100%;
height: 100%;
position: absolute;
left: 0px;
right: 0px;
}
#search_panel{
width: 260px;
/*height: 500px;*/
position: absolute;
left: 5px;
top: 5px;
background-color: #dbdee2;
border-radius: 3px;
border:1px dashed #dbdee2;
box-shadow: 0 2px 3px -1px red;
}
#search_content{
width: 200px;
height: 25px;
padding-left: 7px;
border:1px solid pink;
border-radius: 3px;
}
#zoom_level{
width: 132px;
height: 25px;
padding-left: 7px;
border:1px solid pink;
border-radius: 3px;
}
#btn{
width: 40px;
height: 29px;
border:2px solid pink;
border-radius: 3px;
}
#btn_true,#btn_interest{
width: 40px;
height: 29px;
margin-top: 5px;
border:2px solid pink;
border-radius: 3px;
}
#limit_scope,#relieve_scope{
width: 80px;
height: 29px;
border:2px solid pink;
border-radius: 3px;
margin-left: 30px;
}
#search_interest{
width: 69px;
height: 25px;
padding-left: 7px;
border:1px solid pink;
border-radius: 3px;
margin-bottom: 20px;
}
</style>
</head>
<body>
<div id="container"></div>
<div id="search_panel">
<input type="text" name="" id="search_content">
<button id="btn">搜索</button>

设置级别:<input type="text" name="" placeholder="10" id="zoom_level">
<button id="btn_true">确定</button>

搜索周围的兴趣点:<input type="text" name="" placeholder="美食" id="search_interest">
<button id="btn_interest">搜索</button>

<input type="button" name="" value="限定范围" id="limit_scope">
<input type="button" name="" value="解除范围" id="relieve_scope">
<div id="content_panel"></div>
</div>
<script type="text/javascript">
var map = new AMap.Map('container',{
zoom:15,//初始地图的级别
center:[116.397485,39.90914]// 初始地图的中心点
});

var search_panel = new AMap.Autocomplete({
input:'search_content'//绑定的文本框的id值
});

var placeSearch = new AMap.PlaceSearch({
map:map//再此地图内搜索
});

// select发生改变的时候触发
AMap.event.addListener(search_panel,'select',function(e){
// console.log(e);
placeSearch.search(e.poi.name);
});
search_content.oninput = function() {
if(this.value == '') {
return;
}
// console.log(this.value);
new AMap.Autocomplete().search(this.value,function(status,data){
// console.log(data);
WQ = data.tips[0].location.Q;
JR = data.tips[0].location.R;
// console.log(WQ+','+JR);
btn.onclick = function(){
map.setCenter([JR,WQ]);
}
});
}
// 设置级别
btn_true.onclick = function() {
map.setZoom(zoom_level.value);
}

// 兴趣点搜索
AMap.service(['AMap.PlaceSearch'], function() {
btn_interest.onclick = function() {
new AMap.PlaceSearch({
type:search_interest.value,//搜索结果的类型
pageSize:5,//一页显示5条
pageIndex:2,//默认在第几页显示
//city:'010',//区号北京区号010
citylimit:true,//是否强制限制在设定的城市内搜索
map:map,//展示在哪个地图里
panel:'content_panel'//放在哪个元素下
//第一个参数是关键字,第二个是中心点,第三个是范围,第四个是匿名函数
}).searchNearBy('',[map.getCenter().R,map.getCenter().Q],2000,function() {

});
}
});

limit_scope.onclick = function() {
var bounds = map.getBounds();
map.setLimitBounds(bounds);
}
relieve_scope.onclick = function() {
map.clearLimitBounds();
}

</script>
</body>


写回答

2回答

好帮手慕久久

2021-01-06

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

该报错是因为地图内部代码找不到如下文件造成的:

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

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

高德地图更新后,部分api需要在本地服务器的环境下才能正常使用。因此初步怀疑该报错也是因为页面直接通过“file://”的方式打开造成的。

老师在服务器环境下打开页面后,测试很久,发现该报错没有了,建议同学也在服务器环境下打开试试(学习ajax时,使用过的服务器)。

由于官方没有说明这个问题如何解决,所以建议同学先忽略它往后学习即可。

祝学习愉快!

0
hao_
hp>好的老师谢谢您

h021-01-06
共1条回复

好帮手慕久久

2021-01-05

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

1、清除上一次的搜索痕迹,可以使用clearMap方法,如下:

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

2、地点搜索报错是因为请求回来的数据可能是空对象,如下:

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

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

由于data是空对象,data.tips就是undefined(不是数组),data.tips[0]就是undefined[0],这样获取数据是错误的,因此会报错。

可以将data处理一下:

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

3、代码可做如下优化:

有些关键词,获取到的数据可能没有location对象,因此WQ、 JR可能是undefined,此时点击按钮会因为数据不合理导致报错:

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

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

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

建议当WQ、 JR有数据时再调用setCenter方法:

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

祝学习愉快!


0
hao_
hp>http://img.mukewang.com/climg/5ff530b709c5f7c918910831.jpg谢谢姐姐但是还有错误,这个我看不懂,就是查找一个地方兴趣点之后,在搜索另一个地方兴趣点,有的时候就报错

h021-01-06
共1条回复

0 学习 · 6815 问题

查看课程