zoukankan      html  css  js  c++  java
  • 地图搜索地图定位标注

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
    body, html{ 100%;height: 100%;margin:0;font-family:"微软雅黑";font-size:14px;}
    #l-map{height:800px;100%;}
    #r-result{100%;}
    .tangram-suggestion-main{z-index: 999}
    #search-button {
    pointer-events: auto;
    background: #3385ff;
    57px;
    height: 38px;
    float: right;
    border: 0;
    padding: 0;
    cursor: pointer;
    border-radius: 0 2px 2px 0;
    box-shadow: 1px 2px 1px rgba(0,0,0,.15);
    color:white;
    }
    </style>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=mPpaz9THaHPl9DgUu0DBqQwGrhFBKnyW"></script>
    <title>关键字输入提示词条</title>
    </head>
    <body>
    <div>

    <div style="500px;padding-left:10px;position: fixed;top:20px;left:50%;margin-left: -250px;z-index: 555;background: white">
    <div id="r-result"><!-- 请输入: --><input type="text" id="suggestId" size="20" value="百度" style="430px;padding-left:10px;vertical-align: middle;outline: 0;border: 0;margin-top: 11px" placeholder="请输入地点" />
    <button id="search-button" data-title="搜索" data-tooltip="1">搜索</button>
    </div>

    <div id="searchResultPanel" style="border:1px solid #C0C0C0;150px;height:auto; display:none;z-index: 5555;vertical-align: middle;"></div>
    </div>


    <div id="l-map"></div>
    </div>

    </body>
    </html>
    <script src="jquery-1.9.1.min.js"></script>
    <script type="text/javascript">
    // 百度地图API功能
    function G(id) {
    return document.getElementById(id);
    }

    var map = new BMap.Map("l-map");

    var myIcon = new BMap.Icon("location.png", new BMap.Size(28, 42), {
    // 指定定位位置。
    // 当标注显示在地图上时,其所指向的地理位置距离图标左上
    // 角各偏移10像素和25像素。您可以看到在本例中该位置即是
    // 图标中央下端的尖角位置。
    anchor: new BMap.Size(12, 38),

    });
    map.centerAndZoom("北京",12); // 初始化地图,设置城市和地图级别。
    map.enableScrollWheelZoom(); //启用滚轮放大缩小,默认禁用
    map.enableContinuousZoom();
    //单击获取点击的经纬度
    map.addEventListener("click",function(e){
    map.clearOverlays();
    alert("当前位置:" + e.point.lng + ", " + e.point.lat);
    var marker = new BMap.Marker({lat:e.point.lat,lng:e.point.lng},{icon:myIcon});
    map.addOverlay(marker);
    marker.enableDragging();
    marker.addEventListener("dragend", function(e){
    alert("当前位置:" + e.point.lng + ", " + e.point.lat);
    })
    //alert(e.point.lng + "," + e.point.lat);
    });
    var ac = new BMap.Autocomplete( //建立一个自动完成的对象
    {"input" : "suggestId"
    ,"location" : map}
    );


    $("#search-button").click(function(){
    var val=$("#suggestId").val();
    if(val!=""){
    get(val)
    }
    })

    function getLongLat(address,fn){
    $.ajax({
    url: "http://api.map.baidu.com/geocoder/v2/?address="+address+"&output=json&ak=mPpaz9THaHPl9DgUu0DBqQwGrhFBKnyW&callback=showLocation",
    type: "GET",
    dataType: "jsonp", //指定服务器返回的数据类型
    success: function (data) {
    fn.call(null,data)
    }
    });
    }

    function get(address){
    getLongLat(address,function(data){
    console.log(data)
    if(data.status==0){
    var location=data.result.location;
    map.clearOverlays(); //清除地图上所有覆盖物
    //获取第一个智能搜索的结果
    var pp={lng: location.lng, lat: location.lat}
    map.centerAndZoom( new BMap.Point(location.lng, location.lat), 18);
    var maker=new BMap.Marker(pp,{icon:myIcon})
    map.addOverlay(maker); //添加标注
    maker.enableDragging();
    maker.addEventListener("dragend", function(e){
    alert("当前位置:" + e.point.lng + ", " + e.point.lat);
    })
    }else{
    alert("无相关结果")
    }
    })
    }

    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;
    G("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;
    G("searchResultPanel").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;

    setPlace();
    });

    function setPlace(){
    map.clearOverlays(); //清除地图上所有覆盖物
    function myFun(){
    var pp = local.getResults().getPoi(0).point;
    console.log("pp",pp)
    //获取第一个智能搜索的结果
    map.centerAndZoom(pp, 18);
    var marke=new BMap.Marker(pp,{icon:myIcon})
    map.addOverlay(marke);
    marke.enableDragging();
    marke.addEventListener("dragend", function(e){
    alert("当前位置:" + e.point.lng + ", " + e.point.lat);
    })
    }
    var local = new BMap.LocalSearch(map, { //智能搜索
    onSearchComplete: myFun
    });
    local.search(myValue);
    }
    </script>

  • 相关阅读:
    使用ADO.NET2.0提升数据交互性能 DataSet 数据表
    AD域控制器所有使用的端口明细列表
    链接数据库 远程事务的处理方式
    根据权限动态生成菜单栏和工具栏
    FTP服务器配置(cmd中ftp命令)
    该操作未能执行,因为 OLE DB 提供程序SQLOLEDB无法启动分布式事务
    ChartLet GDI+中发生一般性错误
    SQL SERVER 2000用户sa 登录失败的解决办法
    .net实例:网站发布后,在IIS中浏览提示:无法找到该页...404错误。
    Winform 关闭应用程序
  • 原文地址:https://www.cnblogs.com/liuhao-web/p/9492317.html
Copyright © 2011-2022 走看看