天天看點

高德地圖H5定位,搜尋清單-完整代碼

 換了兩家公司都提上需求要做這個定位的地圖,今天整理了下把整頁的源代碼貼出來供大家參考下!其中的不足還請大家見諒,指出改正!

高德地圖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" target="_blank" rel="external nofollow" />
    <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>