地理位置获取并显示 --- 百度地图API

HTML:

<!DOCTYPE html>
<html>
  <head>
    <meta charset=utf-8"/>
    <title>Simple Map</title>
        <link rel="stylesheet" type="text/css" href="css/map.css">
        <script type="text/javascript" src="http://api.map.baidu.com/api?ak=E4805d16520de693a3fe707cdc962045"></script>
        <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
    </head>
    <body>
        <div id="content" class="content">
            <div id="find">
                <input type="text" value="" id="keyword" />
                <input type="button" name="" id="search" value="查询" />
            </div>
            <div id="container"></div>
        </div>
    </body>
    <script type="text/javascript" src="js/map.js"></script>
</html>

Css:

body,html{
	width: 100%;
	height: 100%;
	margin:0 auto;
	padding: 0;
	font-family:"微软雅黑";
}
.content{
	margin: 0 auto;
}
p{
	margin-left:5px;
	font-size:14px;
}
#find{
	width:220px;
	display: block;
	margin: 0 auto;
}
#container{
	width:600px;
	height:500px;
	border:0px solid gray;
	display: block;
	margin: 0 auto;
}
/*设置当前控件样式*/
.BMap_cpyCtrl{
    display:none;
}
.anchorBL{
	bottom: 0;
}
.anchorTR>div:last-child{
    display: none;
}

Js:

var you_Longitude = 116.4039006839;  //初始经度
var you_latitude = 39.9152108931;  //初始纬度

//创建Map实例--begin
var map = new BMap.Map("container");
var point = new BMap.Point(you_Longitude,you_latitude);  //设置初始化位置
map.centerAndZoom(point,12);  //8参数为初始化画面尺度
//创建Map实例--begin

build_marker(you_Longitude,you_latitude);  //添加初始位置标注
map.enableScrollWheelZoom();  //添加鼠标滚动缩放

//添加控件--begin
map.addControl(new BMap.OverviewMapControl({isOpen:false,anchor:BMAP_ANCHOR_BOTTOM_RIGHT}));  //添加缩略图控件
map.addControl(new BMap.NavigationControl());  //添加缩放平移控件
map.addControl(new BMap.ScaleControl());  //添加比例尺控件
map.addControl(new BMap.MapTypeControl());  //添加地图类型控件
//添加控件--end

//判断浏览器是否支持当前位置获取--begin
if(navigator.geolocation){
    //浏览器支持geolocation
    var geolocation = new BMap.Geolocation();
    geolocation.getCurrentPosition(function(position){
        //添加当前位置--begin
        you_Longitude = position.point.lng;// 经度
        you_latitude = position.point.lat;// 纬度
        //执行坐标转换
        change_posi(you_Longitude,you_latitude,function(data){
            var longitude = data.result[0].x;  //转换后经度
            var latitude = data.result[0].y;  //转换后纬度
            var point = new BMap.Point(longitude,latitude);  //设置当前位置
            map.centerAndZoom(point,12);  //创建当前位置在中心点
            build_marker(longitude,latitude);  //添加当前位置标注
        });
        //添加当前位置--end
    },function(error){
        switch(error.code){
            case 1:
                alert("位置服务被拒绝");
            break;

            case 2:
                alert("暂时获取不到位置信息");
            break;

            case 3:
                alert("获取信息超时");
            break;

            case 4:
                alert("未知错误");
            break;
        }
    },{
        enableHighAccuracy:true, 
        maximumAge:1000
    });
}else{
    alert('浏览器不支持GeoLocation!');   //浏览器不支持geolocation
}
//判断浏览器是否支持当前位置获取--end

//点击地图,获取经纬度坐标--begin
map.addEventListener("click",function(e){
    // Longitude = e.point.lng;  //点击位置经度坐标
    // latitude = e.point.lat;  //点击位置纬度坐标
    map.clearOverlays();  //清除上一个标注
    build_marker(e.point.lng,e.point.lat);  //创建当前标注
});
//点击地图,获取经纬度坐标--end

//创建标注--begin
function build_marker(Longitude,latitude){
    //创建标注--begin
    var icon = new BMap.Icon("http://api.map.baidu.com/img/markers.png",new BMap.Size(23,25));  //设置标注的图标
    var marker = new BMap.Marker(new BMap.Point(Longitude,latitude),{icon:icon});  //设置标注的经纬度
    map.addOverlay(marker);  //把标注添加到地图上
    //创建标注--end

    //创建位置信息内容--begin
    get_posi(latitude,Longitude,function(data){
        //渲染需显示的位置信息--begin
        var content = "<table>";  
            content = content + "<tr><td>行政区编码:"+data.result.addressComponent.adcode+"</td></tr>";  
            content = content + "<tr><td>地址:"+data.result.formatted_address+"</td></tr>";  
            content += "</table>";
        //渲染需显示的位置信息--end
        var infowindow = new BMap.InfoWindow(content);  //位置信息显示内容
        marker.addEventListener("mouseover",function(){  //鼠标移入显示
            this.openInfoWindow(infowindow);  //显示详细位置信息
        });
        marker.addEventListener("mouseout",function(){  //鼠标移出隐藏
            this.closeInfoWindow(infowindow);  //隐藏详细位置信息
        });
    });
    //创建位置信息内容--end 
}
//创建标注--end

//将经纬度转换为具体位置--begin
function get_posi(latitude,Longitude,_callback){
    $.ajax({    
        url : 'http://api.map.baidu.com/geocoder/v2/?ak=Y4NcP7YcxEkiwSuYedq5vW09&callback=renderReverse&location='+latitude+','+Longitude+'&output=json&pois=1&radius=1000',    
        type : 'get',
        data : 'data', 
        dataType:"jsonp",  //数据格式设置为jsonp,可跨域      
        success : _callback,  //设置回调函数
        error : function(msg){  //错误执行
            alert('api接口key值可能失效了!');
        }
    })
}
//将经纬度转换为具体位置--end

//执行搜索事件--begin
document.getElementById('search').onclick = function(){
    map.clearOverlays();  //清除上一个标注
    search();  //搜索地址
}
document.onkeydown = function(e){ 
    var ev = document.all ? window.event : e;
    if(ev.keyCode==13) {
        map.clearOverlays();  //清除上一个标注
        search();  //搜索地址
    }
}
//执行搜索事件--begin

//关键字搜索--begin
function search(){
    var keyword = document.getElementById("keyword").value;  //获取输入地址
    var local = new BMap.LocalSearch(map, {renderOptions:{map: map}});  //创建搜索类实例
    local.search(keyword);  //搜索地址
}
//关键字搜索--end

//坐标转换--begin
function change_posi(Longitude,latitude,_callback){
    $.ajax({        
        url : 'http://api.map.baidu.com/geoconv/v1/?coords='+Longitude+','+latitude+'&from=1&to=5&ak=Y4NcP7YcxEkiwSuYedq5vW09',
        type : 'get',
        data : 'data', 
        dataType:"jsonp",  //数据格式设置为jsonp,可跨域      
        success : _callback,  //设置回调函数
        error : function(msg){  //错误执行
            alert('api接口key值可能失效了!');
        }
    })
}
//坐标转换--end

// //已知地点名创建位置信息--begin
// var map = new BMap.Map("container"); //创建地图实例
// map.enableScrollWheelZoom();  //添加鼠标滚动缩放
// //添加控件
// map.addControl(new BMap.OverviewMapControl({isOpen:false,anchor:BMAP_ANCHOR_BOTTOM_RIGHT}));  //添加缩略图控件
// map.addControl(new BMap.NavigationControl());  //添加缩放平移控件
// map.addControl(new BMap.ScaleControl());  //添加比例尺控件
// map.addControl(new BMap.MapTypeControl());  //添加地图类型控件
// //显示地址
// var keyword = "广东广通医药有限公司";  //获取输入地址
// var local = new BMap.LocalSearch(map, {renderOptions:{map: map}});  //创建搜索类实例
// local.search(keyword);  //搜索地址
// //已知地点名创建位置信息--end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值