高德地图H5定位,搜索列表-完整代码

 换了两家公司都提上需求要做这个定位的地图,今天整理了下把整页的源代码贴出来供大家参考下!其中的不足还请大家见谅,指出改正!

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
    <title>Document</title>
    <link rel="stylesheet" href="https://cache.amap.com/lbs/static/main1119.css"/>
    <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.8&key=a8e3f1d526511281bac2edf977a6ca03"></script>
    <script type="text/javascript" src="https://cache.amap.com/lbs/static/addToolbar.js"></script>
    <style type="text/css">
#mapContainer{
    position: fixed;
    top: 0;
    left: 0;
    overflow: auto;
    margin-top: 0;
    margin-bottom: 0;
    background: #fff;
    width: 100%;
    height: 100%;
}
#mapContainer .search_wrap{
    width: 100%;
    height: 60px;
    background: #fff;
    background: linear-gradient(to right, #252A82 , #4AC4C9);
    border-bottom: 2px solid #ccc;
    z-index: 100;
}
#mapContainer .search_wrap input{
    width: 70%;
    height: 30px;
    border-radius: 10px;
    margin: 15px 15px;
    overflow: hidden;
    background: rgba(238,238,238,1) url(../images/inp-search.png) no-repeat 20px center;
    border: 1px solid rgba(220,220,220,1);
    opacity: 0.96;
    text-indent: 40px;
}
#mapContainer .search_wrap button{
    padding: 8px;
    border-radius: 10px;
    color: #8497D6;
    border: none;
}
#mapContainer #container{
    height: 250px;
    top: 60px;
}
#mapContainer #tip{
    top: 50px;
    display: none;
}
#mapContainer #panel {
    position: absolute;
    width: 100%;
    top: 310px;
    bottom: 0;
    left: 0;
    background: #fff;
    border-bottom: solid 1px silver;
}
#mapContainer .clean{
    position: absolute;
    right: 111px;
    top: 22px;
    width: 20px;
    height: 20px;
    background: #ccc;
    background-size:cover;
    display: none;
    border-radius: 50%;
   	text-align: center;
   	line-height: 20px;
   	color: #fff;
}
#mapContainer .amap-touch-toolbar{
	left: 10px;
	right: 0;
}
    </style>
<body>
<div class="page" id="map">
    <div class="page-content" id="mapContainer">
        <!-- 搜索IOP -->
        <div class="search_wrap">
            <!-- <img src="skins/default/images/icons/ico5.png"/> -->
            <input type="text" id="search" placeholder="请输入搜索地址">
            <button id="search_btn">搜索</button>
            <div class="clean">X</div>
        </div>
        <!-- 地图显示区域 -->
        <div id='container'></div>
        <!-- 定位详情 -->
        <div id="tip"></div>
        <!-- 周边检索 -->
        <div id="panel"></div>
    </div>
</div>
	
	<script src="http://libs.baidu.com/jquery/1.8.3/jquery.min.js"></script>
	<script type="text/javascript">
            // ————————————————————地图定位————————————————————————————
            var map, geolocation, n1, n2;

            //加载地图,调用浏览器定位服务
            map = new AMap.Map('container', {
                resizeEnable: true
            });

            map.plugin('AMap.Geolocation', function() {
                geolocation = new AMap.Geolocation({
                    enableHighAccuracy: true,//是否使用高精度定位,默认:true
                    timeout: 10000,          //超过10秒后停止定位,默认:无穷大
                    buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
                    zoomToAccuracy: true,      //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
                    buttonPosition:'RB'
                });
                map.addControl(geolocation);
                geolocation.getCurrentPosition();
                AMap.event.addListener(geolocation, 'complete', onComplete);//返回定位信息
                AMap.event.addListener(geolocation, 'error', onError);      //返回定位出错信息
               
            });

            //解析定位结果
            function onComplete(data) {
                var str = ['定位成功'];
                str.push('经度:' + data.position.getLng());
                str.push('纬度:' + data.position.getLat());

                AMap.service(["AMap.PlaceSearch"], function() {
                    var placeSearch = new AMap.PlaceSearch({ //构造地点查询类
                        pageSize: 5,
                        pageIndex: 1,
                        city: "010", //城市
                        map: map,
                        panel: "panel",
                        input:"search"
                    });
                    //关键字查询
                    //placeSearch.search('北京大学');

                    var cpoint = [data.position.getLng(), data.position.getLat()]; //中心点坐标
                    placeSearch.searchNearBy('', cpoint, 230, function(status, result) {
                        
                    });
                    AMap.event.addListener(placeSearch, "selectChanged", function(data){
                        var selected = data.selected.data;
                        console.log( data.selected );

                        alert(selected.cityname + ',' + selected.adname + ',' + selected.name+'测试1111');
                        alert( selected.location.lat + ',' + selected.location.lng+'测试2222' );  // 点击poi周边结果经纬度
                    });
                }); 

                //如为IP精确定位结果则没有精度信息
                if(data.accuracy){
                     str.push('精度:' + data.accuracy + ' 米');
                }

                str.push('是否经过偏移:' + (data.isConverted ? '是' : '否'));
                document.getElementById('tip').innerHTML = str.join('<br>');
            }

            document.getElementById('search_btn').onclick = function (){
                var html = document.getElementById('search').value;
                var placeSearch = new AMap.PlaceSearch({ //构造地点查询类
                        pageSize: 5,
                        pageIndex: 1,
                        city: "010", //城市
                        map: map,
                        panel: "panel"
                    });
                    
                placeSearch.search( html );
                AMap.event.addListener(placeSearch, "selectChanged", function(data){
                    var selected = data.selected.data;
                    console.log( data.selected );

                    alert(selected.cityname + ',' + selected.adname + ',' + selected.name);
                    alert( selected.location.lat + ',' + selected.location.lng );  // 点击poi周边结果经纬度
                });
            }

            //解析定位错误信息
            function onError(data) {
                document.getElementById('tip').innerHTML = '定位失败';
            }

            $('#mapContainer .search_wrap input').bind('input propertychange',function(){//搜索框清除
                if($(this).val().length>0){
                    $(this).siblings('.clean').show()
                }else{
                    $(this).siblings('.clean').hide()
                }
            });
            $('#mapContainer .clean').click(function(){//搜索框清除按钮隐藏
                $('#mapContainer .search_wrap input').val("");
                $(this).hide();
            })  
            // ————————————————————地图定位end————————————————————————————
	</script>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_42221334/article/details/83900776
今日推荐