高德地图搜索经纬度附近地理位置以及标记等

在这里插入图片描述

<!DOCTYPE HTML>
<html lang="zh">
<meta charset="utf-8"> 
<style>
    .form-group > div {
        margin-bottom: 6px;
        line-height: 34px;
    }
    .form-group input {
        height: 27px;
    }
    #areaRow ul li {
        background: #FFFFFF;
    }
    #areaRow ul li:hover {
        background: #e5e6e7;
    }
    #areaRow li {
        border: 1px solid #e5e6e7;
        line-height: 30px;
        padding-left: 4px;
    }
</style>
<body class="white-bg">
<div style="padding: 20px">
    <div class="left" style="float: left;width: 33%;">
        <div class="form-group">
            <div>
                关键字: <input id="tipinput" type="text">
            </div>
            <div>
                经纬度: <input id='lnglat' type="text" readonly>
            </div>
        </div>
        <div id="areaRow" style="width: 100%;"></div>
    </div>
    <div class="right" style="float: left;width: 60%">
        <div id="container" style="width: 500px;height: 500px"></div>
    </div>
</div> 
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
<script src="https://webapi.amap.com/maps?v=1.4.15&key=***您申请的key值***&plugin=AMap.Autocomplete,AMap.PlaceSearch"></script>
<script type="text/javascript">
    //初始化地图
    var map = new AMap.Map('container', {
        resizeEnable: true, //是否监控地图容器尺寸变化
        zoom: 12, //初始地图级别
    });
    //输入提示
    var auto = new AMap.Autocomplete({
        input: "tipinput"
    });
    var placeSearch = new AMap.PlaceSearch({
        map: map
    });  //构造地点查询类
    AMap.event.addListener(auto, "select", select);//注册监听,当选中某条记录时会触发
    function select(e) {
        var lng = e.poi.location.lng;
        var lat = e.poi.location.lat;
        if (e.poi && e.poi.location) {
            map.setZoom(15);
            map.setCenter(e.poi.location);
            document.getElementById("lnglat").value = lng + "," + lat;
            addMarker(lng, lat);
        }
    }
    //为地图注册click事件获取鼠标点击出的经纬度坐标
    map.on('click', function (e) {
        // document.getElementById("lnglat").value = e.lnglat.getLng() + ',' + e.lnglat.getLat();
        if (marker) {
            marker.setMap(null);
            marker = null;
        }
        addMarker(e.lnglat.getLng(), e.lnglat.getLat());
        aMapSearchNearBy([e.lnglat.getLng(), e.lnglat.getLat()]);
    });
    var marker;
    // 实例化点标记
    function addMarker(lng, lat) {
        var icon = new AMap.Icon({
            size: new AMap.Size(19, 31),//图标大小
            imageSize: new AMap.Size(19, 31),
            image: 'https://webapi.amap.com/theme/v1.3/markers/b/start.png',  // Icon的图像
        });
        marker = new AMap.Marker({
            icon: icon,
            position: [lng, lat]
        });
        marker.setMap(map);
    }
    // 高德地图查询周边
    function aMapSearchNearBy(centerPoint) {
        AMap.service(["AMap.PlaceSearch"], function () {
            var placeSearch = new AMap.PlaceSearch({
                pageSize: 10,    // 每页10条
                pageIndex: 1,    // 获取第一页
            });
            // 第一个参数是关键字,这里传入的空表示不需要根据关键字过滤
            // 第二个参数是经纬度,数组类型
            // 第三个参数是半径,周边的范围
            // 第四个参数为回调函数
            placeSearch.searchNearBy('', centerPoint, 1000, function (status, result) {
                if (result.info === 'OK') {
                    var locationList = result.poiList.pois; // 周边地标建筑列表
                    // 生成地址列表html
                    createLocationHtml(locationList);
                } else {
                    console.log('获取位置信息失败!');
                }
            });
        });
    }
    /**
     * 组装Html
     * @param locationList
     */
    function createLocationHtml(obj) {
        //清空里面的文字
        $("#tipinput,#lnglat").val("");
        //生成具体的待选项目html
        var innerHtml = "<ul style='width: 86%'>";
        innerHtml += "<li style='text-align: center;background: #e5e6e7'>附近相关</li>"
        for (var i = 0; i < obj.length; i++) {
            var name = "";
            innerHtml += "<li";
            Object.keys(obj[i]).forEach(function (key) {
                innerHtml += " " + key;
                innerHtml += "=" + obj[i][key];
                innerHtml += "  οnclick=selectInfo(this)";
                name = obj[i]['name'];
            });
            innerHtml += ">" + name + "</li>";
        }
        innerHtml += "</ul>";
        $("#areaRow").html(innerHtml);
    }
    function selectInfo(that) {
        $("#tipinput").val($(that).attr("name"));
        $("#lnglat").val($(that).attr("location"));
        $("#areaRow").html("");
    }
    /*删除处理功能*/
    $("#tipinput").on("keydown", function (e) {
        if (e.keyCode == 8 || e.keyCode == 46) {
            $("#tipinput,#lnglat").val("")
        }
    });
    
</script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值