• 百度地图的API接口----多地址查询和经纬度


    最近看了百度地图的API的接口,正想自己做点小东西,主要是多地址查询和经纬度坐标跟踪,

    下面的代码直接另存为html就可以了,目前测试Chrome和360浏览器可以正常使用。

    <!DOCTYPE html>  
    <html>  
    <head>  
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
    <title>Hello, World</title>  
    <style type="text/css">  
    html,body{height:100%;margin:0px;padding:0px}  
    
    
    .top{height:70px;}
     
     
    .footer{
    position:absolute;
    top:70px;
    bottom:0px;
    100%;
    }
    
    
    .search_div_input{
         500px;
        margin:10px 0 0 10px;
        float: left;
        height: 50px;
    }
    
    .search_div_btn{
         200px;
        margin:8px 0;
        float: left;
        height: 50px;
    }
    
    .search_text {
        margin: 5px 3px;
        padding: 3px;
        font-size: 17px;
        line-height:26px;
        height: 26px;
         96%;
        border: 1px solid #cdcdcd;
    }
    
    .search_btn{
        height: 36px;
         95px;
        margin:5px;
        border: 1px solid #cdcdcd;
    }
    
    /*----------------------*/
    
    .hand{
    padding:10px 0;
    color:#fff;
    cursor:pointer;}
    
    .bg{
    background-color:#0099CC}
    
    .left_r{
    text-align:center;
    height:100%;
    100%;
    display:none;
    }
    
    .right_main{height:100%;
    100%;
    float:left;
    }
    
    textarea
    {
    98%;
    height:90%;
    }
    
    .sf{
    background-color:#8a2;
    cursor:pointer;
    z-index:20;
    height:40px;
    line-height:38px;
    margin-top:-15px;
    top:50%;
    left:0px;
    position:absolute;
    
    }
    .div_border{
        background-color:#929;
        cursor:e-resize;
        z-index:19;
        display:block;
        2px;
        height:100%;
        position:absolute;
    }
    
    .route{100%;float:left;border:1px solid red;height:30px;}
    .route ul{list-style:none;margin:0px -30px; 100%;}
    .route li{float:left;60px;line-height:30px;}
    
    .route a{display:block;text-align:center;height:30px;}
    .route a:link{color:#6f6;text-decoration:none;}
    .route a:visited{color:#666;text-decoration:underline;}
    .route a:hover{color:#FFF; font-weight:bold;text-decoration:none;}
    
    .route ul li i {margin-top:3px;display: inline-block;
    background-image: url(http://webmap1.map.bdstatic.com/wolfman/static/common/images/ui3/mo_banner_ba37b5d.png);
    
    background-repeat: no-repeat;
    }
    .bus-tab i{ 14px;height: 16px;background-position: -1px -192px;}
    .drive-tab i{ 16px;height: 15px;background-position: -29px -192px;}
    .walk-tab i{ 18px;height: 18px;background-position: -62px -189px;}
    .bike-tab i{ 20px;height: 16px;background-position: -83px -216px;}
    
    
    
    </style>  
    
    
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2&ak=3b4abe8cd9e27790a933cd28cebe6eb4"></script>
        <script type="text/javascript" src="http://api.map.baidu.com/library/SearchInfoWindow/1.5/src/SearchInfoWindow_min.js"></script>
        <link rel="stylesheet" href="http://api.map.baidu.com/library/SearchInfoWindow/1.5/src/SearchInfoWindow_min.css" />
    
    <script>
    
    function chk(obj,n)
    {
        var chls1=document.getElementById("border").children;
        var chls2=document.getElementById("tdLeft").children;
        for(var i=0;i<chls1.length;i++)
        {
            chls1[i].className="hand";
            chls2[i].style.display="none";
            chls2[i+1].style.display="none";
        }
        obj.setAttribute("class","hand bg");
        chls2[n+1].style.display="block";
    }
    
    function zoom(obj)
    {
        if(obj.innerText==">")
        {
            obj.innerHTML="&lt;";
            document.getElementById("td_left").style.display="";
            obj.style.left="-2px";
        }
        else{
            obj.innerHTML="&gt;";
            document.getElementById("td_left").style.display="none";
            obj.style.left="3px";
        }
    }
    
    function mDown(e){
        var div_bd = document.getElementById("div_border");
        if(e.target.id=="div_border")div_bd.down=true;
        
    }
    
    function mMove(e) {
        var div_bd = document.getElementById("div_border");
        var td = document.getElementById("td_left");
        if (div_bd.down) {
            td.width=e.clientX+"px";
        }
    }
    
    function mUp(e){
        var div_bd = document.getElementById("div_border");
        div_bd.down=false;
    
    }
    
    function kDown(e){
    var e = e || window.event; 
    if(e.keyCode == 13 && "SearchText" ==document.activeElement.id)search();
    }
    
    document.addEventListener('mousedown',mDown);
    document.addEventListener('mousemove',mMove);
    document.addEventListener('mouseup',mUp);
    //监听回车 
    document.addEventListener("keydown",kDown);
            
    
            
    </script>
    
    </head>
    <body>
    <!--form id="locSearch"-->
    <div class="top">
        <div class="search_div_input">
            <input type="text" name="word" class="search_text" maxlength="256" id="SearchText" autocomplete="off"  />
        </div>
        <div class="search_div_btn">
            <input value="百度一下" id="poiSearchBtn" class="search_btn"  type="button" onclick="search()" />
        </div>
        <div id=div_test></div>
    </div>
    <!--/form-->
    <div class="footer">
        <table width="100%" height="100%" cellpadding="0" cellspacing="0">
            <tr>
              <td id="td_left" width="300px">
              <table width="100%" height="100%"  cellpadding="0" cellspacing="0" style="visible:">
                  <tr>
                    <td id="border" width="40px" valign="top" style="text-align:center; background-color:#000;">
                      <div id=divb1 class="hand bg" onClick="chk(this,0);">搜索</div>
                      <div id=divb2 class="hand" onClick="chk(this,1);">跟踪</div>
                      <div id=divb3 class="hand" onClick="chk(this,2);">线路</div>
                    </td>
                    <td id=tdLeft>
                        <div id=divr0 class="left_r"></div>
                        <div id=divr1 class="left_r" style="display:block">
                            <textarea id="v1" width="100%" rows="5"></textarea><br />
                            <input type="button" onClick="btn1();" class="search_btn"  value="多地址搜索" />
                        </div>
                        <div id=divr2 class="left_r">
                            <textarea id="v2" width="100%" rows="15"></textarea><br />
                            <input type="button" onClick="btn2();" class="search_btn"  value="经纬度标记" />
                        </div>
                        <div id=divr3 class="left_r">
                            <div id="route" class=route>
                            <ul id="route_tab">
                                <li class="tab-item bus-tab" data-index="1">
                                <i></i><span>公交</span>
                                </li>
                            <li class="tab-item drive-tab" data-index="2">
                                <i></i><span>驾车</span>
                            </li>
                            <li class="tab-item walk-tab" data-index="3">
                                <i></i><span>步行</span>
                            </li>
                            <li class="tab-item bike-tab" data-index="4">
                                <i></i><span>骑行</span>
                            </li>
                            </ul></div>
                        </div>
                    </td>
                  </tr>
                </table>
                </td>
                <td style="margin:auto 0;position:relative;">
                    <div id="div_border" class="div_border">    
                    </div>
                    <div id="sf" class="sf" onClick="zoom(this);">&lt;</div>
                    <div id=ditu class="right_main"></div>
                </td>
            </tr>
        </table>
    </div>
    </body>
    </html>
    
    
    <script type="text/javascript"> 
    
    /***  技术参考:http://developer.baidu.com/map/index.php?title=jspopular  ***/
    
    var map = new BMap.Map("ditu");    
    var point = new BMap.Point(116.404, 39.915);    
    point = new BMap.Point(121.369311, 31.224454)
    map.centerAndZoom(point, 17);    
    map.addControl(new BMap.NavigationControl());    
    map.addControl(new BMap.ScaleControl());    
    map.addControl(new BMap.OverviewMapControl());  
    
    map.enableScrollWheelZoom(); 
    
    //////////////////////////////////////
    
    var aInfo=new Array();
    var ap=new Array();
    var am=new Array();
    var al=new Array();
    
    function btn1(){
    
    var val = document.getElementById("v1").value;
    var av=val.split('
    ');
    var count=65;
    map.clearOverlays();
    aInfo=new Array();
    ap=new Array();
    am=new Array();
    
    // 创建地址解析器实例
    var myGeo = new BMap.Geocoder();
    for(var i=0;i<av.length;i++)
    {
        if(av[i]!="")
        // 将地址解析结果显示在地图上,并调整地图视野
        myGeo.getPoint(av[i], function(pot,opt){
        if (pot) {
            var m=new BMap.Marker(pot);
            var lab = new BMap.Label(opt.address,{offset:new BMap.Size(20,-10)});
            m.setLabel(lab);
            m.id=count++;
            m.enableDragging();
            m.addEventListener("click",showInfo);
            am.push(m);
            ap.push(pot);
            aInfo.push('<div style="margin:0;line-height:20px;padding:2px;">城市:'+ opt.city +'<br />地址:'+ opt.address +'</div>');
            map.addOverlay(m);
        }else{
                alert("您选择地址没有解析到结果!");
            }
        }, 
        "上海市");//查询地址所在地城市
    }
    setTimeout(function(){map.setViewport(ap);}, 500);
    }
    
    
    function showInfo(e)
    {
    for(var i=0;i<am.length;i++){am[i].setZIndex(i);}
    e.target.setZIndex(1000);
    var searchInfoWindow = new BMapLib.SearchInfoWindow(map, aInfo[e.target.id-65], {
        title  : "地址详细信息",  //标题
        width  : 290,             //宽度
        height : 75,              //高度
        panel  : "panel",         //检索结果面板
        enableAutoPan : true,     //自动平移
        searchTypes   :[
            BMAPLIB_TAB_SEARCH,   //周边检索
            BMAPLIB_TAB_TO_HERE,  //到这里去
            BMAPLIB_TAB_FROM_HERE //从这里出发
        ]
    });
    searchInfoWindow.open(e.target);        
    }
    
    
    
    function btn2()
    {
    al=new Array();
    ap=new Array();
    var val = document.getElementById("v2").value;
    var v1=val.split('
    ');
    if(v1=="jack")
    {
        map.addEventListener("click", function(e){
        document.getElementById("v2").value+=e.point.lng + ", " + e.point.lat+"
    ";});
        map.setDefaultCursor("crosshair");
        alert("现在可以在地图上拾取坐标点了!");
        return;
    }
    
    for(var i=0;i<v1.length;i++)
    {
        if(v1[i]!="")
        {
            var p = new BMap.Point(v1[i].split(",")[0], v1[i].split(",")[1]);
            var m=new BMap.Marker(p);
            var lab = new BMap.Label("时间"+i,{offset:new BMap.Size(20,-10)});
            m.setLabel(lab);
            m.enableDragging();
            ap.push(p);
            al.push(p);
        }
    }
    map.clearOverlays();
    var pointCollection = new BMap.PointCollection(ap);  // 初始化PointCollection
    map.addOverlay(pointCollection);  
    
    var pline=new BMap.Polyline();
    pline.setPath(al);
    pline.setStrokeWeight(2); 
    map.addOverlay(pline);
    map.setViewport(ap); 
    }
    
    
    function search()
    {
    
        var chls1=document.getElementById("tdLeft").children;
        for(var i=0;i<chls1.length;i++)
            chls1[i].style.display="none";
        chls1[0].style.display="block";
    var v= document.getElementById("SearchText");
    var local = new BMap.LocalSearch(map, {
            renderOptions: {map: map, panel: "divr0",autoViewport:"true"}
        });
        local.search(v.value);
    }
    
    
    </script>

    ============================================================== 

    另外再推荐一个别人写的,很好玩的地图应用:

    http://liumeijun.com/

  • 相关阅读:
    kmp
    RMP
    p次方求和
    河南省之6 Metric Matrice
    表达式求值
    线段树
    办公软件试题
    河南省之6 遥控器
    三个水杯
    JLink + USBTO232 MINI作品
  • 原文地址:https://www.cnblogs.com/mq0036/p/4890306.html
Copyright © 2020-2023  润新知