百度地图api的使用

输入起点位置到达固定位置(一键导航):

通过百度地图拾取坐标  获取坐标位置,map.baidu.com/?latlng=坐标&title=‘成都’&content=‘成都高新区’&autoOpen=ture,----参数分别是:坐标、显示地图中的标题、内容;备注:终点可以在后台配置。


有很多网站用的有百度地图,所以自己也试了试:

百度地图api使用js实现的。首先你要在引入百度地图api的js  1.5版本以前的可以不要密钥,之后的版本要密钥。

//版本是1.4的

<script src="http://api.map.baidu.com/api?v=1.4" type="text/javascript"></script> 

//1.5版本

<script src="http://api.map.baidu.com/api?v=1.5&ak=您的密钥" type="text/javascript"></script>

之后给div一个id用于百度地图的显示。

  1. <div id="container"></div>   //百度地图显示位置

  2. <script type="text/javascript">

  3.       var map = new BMap.Map("container");          // 创建地图实例 

  4.      var point = new BMap.Point(104.073025,30.664537);  // 创建点坐标  成都的

  5.       map.centerAndZoom(point, 15);                 // 初始化地图,设置中心点坐标和地图级别
  6.  
  7.        map.enableInertialDragging();//开启关系拖拽

  8.        map.enableScrollWheelZoom(); //开启鼠标滚动缩放

  9.       var marker = new BMap.Marker(point);        // 创建标注   

  10.        map.addOverlay(marker);                     // 将标注添加到地图中  
         
  11.     
  12. </script>
  13.    这样一个简单的百度地图就可以添加在你的页面中了。


添加复杂的覆盖物:

<script type="text/javascript">

// 百度地图API功能
var map = new BMap.Map("map");
var point = new BMap.Point(104.073025,30.664537); //地图坐标
map.centerAndZoom(point,12);                //初始化地图
map.enableScrollWheelZoom()                    //鼠标滑轮
// 复杂的自定义覆盖物

    function ComplexCustomOverlay(point, text, mouseoverText){
      this._point = point;
      this._text = text;
      this._overText = mouseoverText;
    }
    
//继承API的BMap.Overlay
    ComplexCustomOverlay.prototype = new BMap.Overlay();
 // 实现初始化方法
    ComplexCustomOverlay.prototype.initialize = function(map){
     //添加覆盖物的样式
     // 保存map对象实例
      this._map = map;
   // 创建div元素,作为自定义覆盖物的容器
      var div = this._div = document.createElement("div");
      div.style.position = "absolute";
      div.style.zIndex = BMap.Overlay.getZIndex(this._point.lat);
   // 可以根据参数设置元素外观
      div.style.backgroundColor = "#EE5D5B";
      div.style.border = "1px solid #BC3B3A";
      div.style.color = "white";
      div.style.height = "18px";
      div.style.padding = "2px";
      div.style.lineHeight = "18px";
      div.style.whiteSpace = "nowrap";
      div.style.MozUserSelect = "none";
      div.style.fontSize = "12px"
   //创建span标签 用于存放覆盖物信息
      var span = this._span = document.createElement("span");
  //添加到div下面
      div.appendChild(span);
      span.appendChild(document.createTextNode(this._text));      
      var that = this;
  //添加角图标
      var arrow = this._arrow = document.createElement("div");
      arrow.style.background = "url(http://map.baidu.com/fwmap/upload/r/map/fwmap/static/house/images/label.png) no-repeat";
      arrow.style.position = "absolute";
      arrow.style.width = "11px";
      arrow.style.height = "10px";
      arrow.style.top = "22px";
      arrow.style.left = "10px";
      arrow.style.overflow = "hidden";
      div.appendChild(arrow);
  //鼠标移动到上面   
      div.onmouseover = function(){
        this.style.backgroundColor = "#6BADCA";
        this.style.borderColor = "#0000ff";
        this.getElementsByTagName("span")[0].innerHTML = that._overText;
        arrow.style.backgroundPosition = "0px -20px";
      }
//鼠标离开
      div.onmouseout = function(){
        this.style.backgroundColor = "#EE5D5B";
        this.style.borderColor = "#BC3B3A";
        this.getElementsByTagName("span")[0].innerHTML = that._text;
        arrow.style.backgroundPosition = "0px 0px";
      }
   // 将div添加到覆盖物容器中
      map.getPanes().labelPane.appendChild(div);
   // 需要将div元素作为方法的返回值,当调用该覆盖物的show、   
   // hide方法,或者对覆盖物进行移除时,API都将操作此元素。

      return div;
    }  //初始化结束
    
 // 实现绘制方法
   
    ComplexCustomOverlay.prototype.draw = function(){
      var map = this._map;
   // 根据地理坐标转换为像素坐标,并设置给容器
      var pixel = map.pointToOverlayPixel(this._point);
      this._div.style.left = pixel.x - parseInt(this._arrow.style.left) + "px";
      this._div.style.top  = pixel.y - 30 + "px";
    }
 
        
    
   //ajax   初始化把后台定义好的覆盖物添加位置读取出来显示在页面上
    $(function(){
        var bs = map.getBounds(),
        bssw = bs.getSouthWest(),
        bsne = bs.getNorthEast(),
        zoom = map.getZoom();
    $("body").data("zoom",zoom);       //通过jq把变量保存在body中
    $("body").data("minlng",bssw.lng);
    $("body").data("maxlng",bsne.lng);
    $("body").data("minlat",bssw.lat);
    $("body").data("maxlat",bsne.lat);
    $.ajax({
        'type':'post',
        'dataType':'json', 
        'data':{zoom:zoom,minlng:$("body").data('minlng'),maxlng:$("body").data('maxlng'),minlat:$("body").data('minlat'),maxlat:$("body").data('maxlat')},
        'url':"{:U('Map/xq')}",     //查询位置的控制器方法
        'success':function(json){
            $("#map_right_content").empty();
            $(json).each(function(i){   //因为有多个覆盖物的可能所以通过循环添加到页面中
                // 添加自定义覆盖物   这样才能在页面中显示出来

                var myCompOverlay = new ComplexCustomOverlay(

   //返回的值

new BMap.Point(this.maplng,this.maplat),this.scount+'套',this.scount+"套|"+this.name);

                map.addOverlay(myCompOverlay);
            });
        },
        'error':function(data){
            alert('真失败');
        }
    });
    });

</script>

//  覆盖物添加完成

后台点击地图获取图标位置信息


marker.enableDragging(); //  enableDragging和disableDragging方法可用来开启和关闭标注的拖拽功能。默认情况下标注不支持拖拽


//添加点击监听事件

marker.addEventListener("dragend", function(e){   //dragend 鼠标拖拽事件

//鼠标拖拽的x  和y赋值给input框
    $("input[name='maplng']").val(e.point.lng);  


    $("input[name='maplat']").val(e.point.lat);
    })

参考的百度地图的手册和案列


鼠标点击获取经纬度

实例1、

map.addEventListener("click",function(e){
    alert(e.point.lng + "," + e.point.lat);
});

实例2、

map.addEventListener("click",moveinfo);

//具体函数

function moveinfo(e){
        $("#maplng").val(e.point.lng);
        $("#maplat").val(e.point.lat);
    }
}


本地搜索

<script type="text/javascript">

//当点击旁边的按钮的时候进行查询
            $(".houseInfo4 .house_tag a").click(function(){
                var val = $(this).value();
                var local = new BMap.LocalSearch(map, {    
                     renderOptions:{map: map, autoViewport: true}    
                    });    
                    local.searchNearby(val, pointer);
            });
        
    </script>


后台点击地图,添加覆盖物。

var map ;
$(function(){
    map = new BMap.Map("container");
    map.centerAndZoom(new BMap.Point(104.067923,30.679943),12);
    map.enableScrollWheelZoom();
    map.addEventListener("click",moveinfo);
});

function showMap(){
    var w_w = $(window).width(),
        w_h = $(window).height(),
        o_w = $("#mapdiv").width(),
        o_h = $("#mapdiv").height(),
        s_h = $(window).scrollTop(),
        s_w = $(window).scrollLeft();
    $("#mapdiv").css({
        left:s_w + (w_w-o_w)/2,
        top:s_h + (w_h-o_h)/2
    }).show();
}
var me=this;
var flag=0;
//添加覆盖物
function addMarker(point, index){  // 创建图标对象   
    var myIcon = new BMap.Icon("http://api.map.baidu.com/images/markers.png", new BMap.Size(23, 25), {        
        offset: new BMap.Size(10, 25),
        imageOffset: new BMap.Size(0, 0 - index * 25)   // 设置图片偏移    
        });   
    //将覆盖物添加到地图中
    var marker = new BMap.Marker(point, {icon: myIcon});  
    me.marker=marker;
    map.addOverlay(me.marker);
    //鼠标拖动覆盖物
    marker.enableDragging();    
    marker.addEventListener("dragend", function(e){    
    $("input[name='maplng']").val(e.point.lng);
    $("input[name='maplat']").val(e.point.lat);
    })
}
//鼠标点击地图事件
function moveinfo(e){
    if(!me.marker||flag){
        addMarker(e.point,0);
        $("input[name='maplng']").val(e.point.lng);
        $("input[name='maplat']").val(e.point.lat);
        flag=0;
    }
}



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值