您的位置:首页 > 其它

高德地图实现地址检索获取结果列表和坐标

2016-10-10 15:40 483 查看

高德开放平台http://lbs.amap.com/api/javascript-api/summary/

之前使用百度地图API实现地址检索功能,获取检索结果并显示到我们自定义的列表中http://www.cnblogs.com/fozero/p/5924210.html

这里我们换成高德地图同样实现跟之前一样的功能,高德跟百度地图API还是有很大的区别的,左边的标注点这里跟百度地图的不同,我是手动在地图上面对坐标点标注 ,并设置它的文本和信息窗口对应右边的结果列表数据,我们直接看代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<link rel="stylesheet" href="http://cache.amap.com/lbs/static/main1119.css"/>
<style type="text/css">
body, html{width: 100%;height: 100%; font-family:"微软雅黑";font-size: 14px;}
*{ margin: 0;padding: 0;}
.left{float:left;}
.right{float:right;}
.clearfix{clear: both;}
.hide{display: none;}
#map{height:628px;width: calc(100% - 305px);border: 1px solid #dadada;}
/*地图标注文本样式*/
.amap-marker-label{
background:none;
border: none;
color: #fff;
}
#result{height: 520px; font-size: 13px; line-height: 20px;overflow: auto;color: #666;}
#result ul {
list-style: outside none none;
}
#result ul li{
border-bottom: 1px solid #dadada;
padding: 10px;
}
#result ul li:hover{
background-color: #f0f0f0;
cursor: pointer;
}
#result .res-data{
background: url(img/ico_marker.png) no-repeat -1px 15px;
}
#result .res-marker{
width: 30px;
height: 58px;
line-height: 58px;
text-align: center;
color: rgb(255, 255, 255);
font-weight: bold;
}
#result .res-address{
width: 235px;
}
#result .title{
font-size: 16px;
color: #000000;
}
.area-right{
width:303px;
}
.area-right .search{
border-bottom: 1px solid #dadada;
padding: 8px 0;
box-shadow: 5px 2px 5px #888888;
margin-bottom: 8px;
}
.area-right .search .s-address{
margin-bottom: 5px;position: relative;border-bottom: 1px solid #DADADA;padding: 0 10px;height: 32px;line-height: 32px;
}
.area-right .search .s-address .btn{
position: absolute;right: 10px;top: 5px;cursor: pointer;
}
.area-right .search .s-address .btn img{
width: 22px;
}
.area-right .search .address{
height: 28px;
line-height: 28px;
border: none;
outline: medium;/*去掉鼠标点击后的边框*/
}

.area-right .search .cur_point{
color: #1E90FF;padding: 0 10px;font-size: 13px;
}
.area-right .search .point{
border:none;
}
</style>
<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=秘钥&plugin=AMap.PlaceSearch"></script>
<script type="text/javascript" src="js/jquery-3.1.1.min.js" ></script>
<title>本地搜索的数据接口</title>
</head>
<body>
<div>
<div class="left" id="map"></div>
<div class="left area-right">
<div class="search">
<div class="s-address">
检索地址:<input type="text" class="address" id="address" placeholder="望京SOHO"/>
<div onclick="doSearch();" class="btn"><img src="img/ico_btn_search.png"/></div>
</div>
<div class="cur_point">
当前坐标:<span id="s-point"></span><br/>
当前检索城市:<span id="s-city"></span>
</div>
</div>
<div id="result">
<!--<ul>
<li>
<div class="res-data">
<div class="left res-marker">
<span>A</span>
</div>
<div class="left res-address">
<div class="title">望京</div>
<div>地址:<span class="rout">地铁14号线; 地铁15号线</span></div>
<div>坐标:<span class="point">116.475304,40.004532</span></div>
</div>
<div class="clearfix"></div>
</div>
</li>
</ul>-->
</div>
</div>
<div class="clearfix"></div>
</div>
</body>
</html>
<script type="text/javascript">

$(function(){

//浏览器当前窗口文档body的高度
var height = $(document.body).height();
$("#map").css("height",(height-5)+"px");
$("#result").css("height",(height-100)+"px");

$("#address").val("");
$("#result").on("click","li",function(){
var point = $(this).find(".point").text();
$("#s-point").text(point);//赋值
$("#result li").css("background-color","#fff");
$(this).css("background-color","#f0f0f0");
});

//绑定input文本框回车事件
$('#address').bind('keypress',function(event){
if(event.keyCode == "13"){
doSearch();//搜索
}
});
});

//高德地图API功能
var map = new AMap.Map('map', {
resizeEnable: true,
zoom:11,
center: [116.397428, 39.90923]
});

//为地图注册click事件获取鼠标点击出的经纬度坐标
var clickEventListener = map.on('click', function(e) {
document.getElementById("s-point").innerHTML = e.lnglat.getLng() + ',' + e.lnglat.getLat();
marker = new AMap.Marker({
icon: "http://webapi.amap.com/theme/v1.3/markers/n/mark_b.png",
position:[e.lnglat.getLng(),e.lnglat.getLat()]
});
marker.setMap(map);
});

var placeSearch = new AMap.PlaceSearch();  //构造地点查询类
var infoWindow = new AMap.InfoWindow({offset: new AMap.Pixel(0, -30)});//信息窗口
var markers = [];//定义标注数组
//地址查询
function doSearch(){
map.remove(markers);//查询前先移除所有标注
var address = document.getElementById("address").value;
placeSearch.search(address, function(status, result) {
if (status === 'complete' && result.info === 'OK') {
//               alert(JSON.stringify(result));
var poiArr = result.poiList.pois;
var str = "<ul>";
for(var i=0;i<poiArr.length;i++){
//在地图上创建标注点
marker = new AMap.Marker({
icon: "http://webapi.amap.com/theme/v1.3/markers/n/mark_b.png"
});
marker.setPosition(new AMap.LngLat(poiArr[i].location.lng,poiArr[i].location.lat));
marker.setMap(map);
marker.setLabel({//label默认蓝框白底左上角显示,样式className为:amap-marker-label
offset: new AMap.Pixel(3, 0),//修改label相对于maker的位置
content: String.fromCharCode(65+i)
});
marker.content = poiArr[i].name+"<br/>"+poiArr[i].address;
marker.on('click', markerClick);
//                    marker.emit('click', {target:marker});
markers.push(marker);

str+='<li>';
str+='<div class="res-data">';
str+='<div class="left res-marker">';
str+='<span>'+String.fromCharCode(65+i)+'</span>';
str+='</div>';
str+='<div class="left res-address">';
str+='<div class="title">'+poiArr[i].name+'</div>';
str+='<div>地址:<span class="rout">'+poiArr[i].address+'</span></div>';
str+='<div>坐标:<span class="point">'+poiArr[i].location.lng+","+poiArr[i].location.lat+'</span></div>';
str+='</div>';
str+='<div class="clearfix"></div>';
str+='</div>';
str+='</li>';
}
str+='</ul>';
$("#result").html(str);
$("#s-point").text(poiArr[0].location.lng+","+poiArr[0].location.lat);
//设置地图显示级别及中心点
map.setZoomAndCenter(14,new AMap.LngLat(poiArr[0].location.lng,poiArr[0].location.lat));
//获取查询城市信息
map.getCity(function(res){
$("#s-city").text(res.province+res.city);
});

}
});
}

//点击标注  显示信息窗口及内容
function markerClick(e) {
infoWindow.setContent(e.target.content);
infoWindow.open(map, e.target.getPosition());
}

</script>

最后看效果,有没有发现高德和百度地图风格不太一样

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: