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