百度地图经纬度转换及关键字输入提示

要使用百度地图的插件首先得有一个百度地图的帐号,用这个帐号到百度地图LBS开发平台(网址:http://lbsyun.baidu.com/apiconsole/key?application=key?from=developer)上申请一个ak值(2.0版本以上的使用ak值);javascript

申请好ak值以后,在你的项目中引入html

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的密码"></script>

便可使用百度地图的插件啦!java

 

先在html中建立一个div容器放置地图,如:api

<div id="container" > </div>

 

咱们还须要一个地址框来输入地址:app

<input id="address" name="address" type="text" value="" >

 

在地址框下方增长一个div来放置关键字输入提示的信息函数

<div id="searchResultPanel" style="border:1px solid #C0C0C0;width:150px;height:auto; display:none;"></div>

 

一个经度框和一个维度框来显示获取的经纬度:this

经度:<input id="lng" name="lng" type="text"  readonly> - 纬度:<input id="lat" name="lat" type="text"  readonly>

 

还有一个查询按钮:spa

<a id="query_button" href="javascript:void(0);">查询</a>

 

如今在js中就能够调用地图类了插件

/*调用地图*/

var map = new BMap.Map("container");

//启动地图的缩小功能已及拖曳功能

map.enableScrollWheelZoom();//启用滚轮放大缩小,默认禁用

map.enableContinuousZoom();//启用惯性拖曳,默认禁用

//添加上缩放的平移控件,缩略图控件以及设置显示的位置

map.addControl(new BMap.NavigationControl());

map.addControl(new BMap.OverviewMapControl());

map.addControl(new BMap.OverviewMapControl({ isOpen:true, anchor:BMAP_ANCHOR_TOP_RIGHT}));//右下角打开
//根据IP定位城市
var myCity = new BMap.LocalCity();
myCity.get(myFun);
function myFun(result){
    map.centerAndZoom(result.name,15);
    var p = {'point':result.center};
    $("#lng").val(p.point.lng);
    $("#lat").val(p.point.lat);
    //建立逆向地址解析类
    var gc = new BMap.Geocoder();
    //获取地址信息
    gc.getLocation(p.point, function(rs){
        var addComp = rs.addressComponents;
        addr = addComp.province + addComp.city ;
        ac.setInputValue(addr);//设置地址搜索框的默认值
        //建立标注
        var marker = new BMap.Marker(new BMap.Point(p.point.lng, p.point.lat)); // 建立标注,为要查询的地址对应的经纬度
        map.addOverlay(marker);
        var content = addr + "<br/><br/>经度:" + p.point.lng + "<br/>纬度:" + p.point.lat;
        var infoWindow = new BMap.InfoWindow("<p style='font-size:14px;'>" + content + "</p>");
        marker.addEventListener("click", function(){this.openInfoWindow(infoWindow);});
    });
}

 

如今咱们建立了地图而且设置了地图的一些属性,以及根据ip地址初始化了地图所在城市并建立标注;code

接下来咱们要建立一个有地址到经纬度的查询

var localSearch = new BMap.LocalSearch(map);
localSearch.enableAutoViewport();
//查询函数
function searchByStationName(keyword){
    localSearch.setSearchCompleteCallback(function(searchResult){
        var poi = searchResult.getPoi(0);
        if(poi){
            map.clearOverlays();
            $("#lng").val(poi.point.lng);
            $("#lat").val(poi.point.lat);
            map.centerAndZoom(poi.point, 15);
            var marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point.lat)); // 建立标注,为要查询的地址对应的经纬度
            map.addOverlay(marker);
            var content = $("#location").val() + "<br/><br/>经度:" + poi.point.lng + "<br/>纬度:" + poi.point.lat;
            var infoWindow = new BMap.InfoWindow("<p style='font-size:14px;'>" + content + "</p>");
            marker.addEventListener("click", function(){this.openInfoWindow(infoWindow);});
        }else{
            alert("请您输入正确可识别的地址!");
        }
    });
    localSearch.search(keyword);

}

 

建立了基本的从地址到经纬度的查询之后,咱们要增添一个功能:即咱们在地址框输入某个关键字如:东莞市 时,在地址框下方会出现一个

提示框

//创建一个提示自动完成的对象
var ac = new BMap.Autocomplete({
    "input" : "location",
    "location" : map
});
/*绑定相应事件*/
//鼠标放在下拉列表的事件
ac.addEventListener("onhighlight", function(e){
    var str = "";
    var _value = e.fromitem.value;
    var value = "";
    if(e.fromitem.index > -1){
        value = _value.province + _value.city + _value.district + _value.street + _value.business;
    }
    str = "FromItem<br/>index = " + e.fromitem.index + "<br/>value = " + value;
    value = "";
    if (e.toitem.index > -1) {
        _value = e.toitem.value;
        value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
    }    
    str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
    $("#searchResultPanel").innerHTML = str;
});

var myValue;
//鼠标点击下拉列表后的事件
ac.addEventListener("onconfirm", function(e) {    var _value = e.item.value;
    myValue = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
    $("#searchResultPanel").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;
    
    searchByStationName(myValue);

});

 

$(function(){
    //当单击查询按钮时触发查询
    $("#query_button").bind('click', function(){
        var keyword = $("#location").val();
        if(keyword.length > 0){
            searchByStationName(keyword);
        }
    });
}); 
相关文章
相关标签/搜索