百度地图高级开发:LBS服务实时定位覆盖范围内关键词标注的解决方案(2)

简介: 百度地图高级开发:LBS服务实时定位覆盖范围内关键词标注的解决方案(2)


项目需求

  • 根据手机端GPS自动获取实时定位;
  • 单击定位控件,筛选当前中心点坐标范围内关键词和距离符合条件的所有标注点;
  • 关键词和半径可以自定义选择;
  • PC端通过IP获取定位的方式,对浏览器有一定的要求。


项目说明

  • 实时定位,需要https加密证书的支持,否则,F12控制台会出现黄色的警示。

getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.


  • 首次加载定位和定位控件,在实际开发中,是两次不同的事件,需要封装函数,重复使用。


项目开发

jsAPI接口引入

<script type="text/javascript"src="https://api.map.baidu.com/getscript?v=3.0&ak=3HGqGo1RHf8zsLZCMj3Fz**"></script>


构建地图容器

<div class="radius">
    <select name="keyword" id="keyword">
        <option value="餐馆">餐馆</option>
        <option value="医院">医院</option>
        <option value="酒店">酒店</option>
        <option value="学校">学校</option>
    </select>
    <select name="radius" id="radius">
        <option value="3000">3km</option>
        <option value="5000">5km</option>
        <option value="10000">10km</option>
    </select>
</div>
<div id="lock_map"></div>


CSS样式表

    <style>
        html, body {
            margin: 0;
            padding: 0;
            width: 100%;
            height: 100%;
        }
        #lock_map {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
        }
        .radius {
            position: absolute;
            z-index: 9999;
            right: 10px;
        }


初始化地图

    var map = new BMap.Map("lock_map");
    var point = new BMap.Point(117.016415, 36.619618);
    map.centerAndZoom(point, 12);
    map.enableScrollWheelZoom(true);
    // 添加定位控件;
    var geolocationControl = new BMap.GeolocationControl({
        anchor: BMAP_ANCHOR_BOTTOM_RIGHT
    });


定位控件事件监听

    geolocationControl.addEventListener("locationSuccess", function (e) {
        getGEO();
    });
    map.addControl(geolocationControl);


定位函数

    //定位;
    function getGEO(){
        var geolocation = new BMap.Geolocation();
        geolocation.getCurrentPosition(function (r) {
            if (this.getStatus() == BMAP_STATUS_SUCCESS) {
                map.clearOverlays();
                //返回当前中心点;
                map.panTo(r.point);
                map.centerAndZoom(r.point, 14);
                //获取半径;
                var radiusLength = $("#radius").val();
                var keyword = $("#keyword").val();
                console.log(keyword)
                var x = r.point.lng;
                var y = r.point.lat;
                var newPoint = new BMap.Point(x, y);
                addMaker(newPoint);//标注中心;
                addCircle(newPoint, radiusLength);//范围;
                searchMaker(newPoint, keyword, x, y);//周边标注;
            } else {
                alert('failed' + this.getStatus());
            }
        }, function (error) {
            console.log(error);
        }, {
            enableHighAccuracy: true,
            timeout: 1000,
            maximumAge: 0
        });
    }


添加标注

    //添加标注;
    function addMaker(point) {
        var marker = new BMap.Marker(point);
        map.addOverlay(marker);
    }


添加圆形覆盖物

    //添加圆形覆盖物;
    function addCircle(newPoint, radius) {
        var circle = new BMap.Circle(newPoint, radius, {
            fillColor: 'blue',
            fillOpacity: 0.3,
            strokeColor: 'blue',
            strokeWeight: 1,
            strokeOpacity: 0.5
        });
        map.addOverlay(circle);
    }


搜索周边坐标

    //搜索周边坐标;
    function searchMaker(newPoint, keyword, x, y) {
        //后台数据库,返回范围内的数据经纬度即可;
        var local = new BMap.LocalSearch(map, {renderOptions: {map: map, autoViewport: false}});
        local.searchNearby(keyword, newPoint, 1000);
        console.log("中心经纬度:" + x + "," + y);
    }


@lockdata.cn

相关文章
【图像分类数据集】非常全面实用的垃圾分类图片数据集共享
【图像分类数据集】非常全面实用的垃圾分类图片数据集共享
1775 35
【图像分类数据集】非常全面实用的垃圾分类图片数据集共享
|
12月前
|
存储 监控 安全
RFID固定资产管理
RFID(射频识别)技术为现代企业固定资产管理提供了创新解决方案。相比传统人工管理方式,RFID技术通过标签与阅读器实现资产快速、精准识别,大幅提升管理效率与准确性。它在资产采购、入库、日常管理、盘点及折旧报废等环节均有广泛应用,帮助企业降低丢失率、优化资源配置并增强竞争力。尽管存在成本和技术标准等挑战,但随着物联网、大数据等技术融合,RFID固定资产管理将更智能化,助力企业高质量发展。
|
6月前
|
人工智能 缓存 开发工具
复盘:如何用Coze+Kimi,搭建一个能自动分析财报的“金融助理”?
借助Coze与Kimi,打造5分钟自动生成财报分析的AI金融助理。支持PDF/Word上传,自动计算指标、风险提示、投资建议,全流程低代码化,大幅提升投研效率,助力金融分析智能化升级。
|
存储 监控 算法
动物目标检测——基于YOLOv5和树莓派4B平台
【10月更文挑战第1天】本文将详细介绍如何在性能更强的计算机上训练YOLOv5模型,并将训练好的模型部署到树莓派4B上,通过树莓派的摄像头进行实时动物目标检测。
633 2
|
机器学习/深度学习 算法 Unix
循环编码:时间序列中周期性特征的一种常用编码方式
循环编码是深度学习中处理周期性数据的一种技术,常用于时间序列预测。它将周期性特征(如小时、日、月)转换为网络可理解的形式,帮助模型识别周期性变化。传统的one-hot编码将时间特征转换为分类特征,而循环编码利用正弦和余弦转换,保持时间顺序信息。通过将时间戳转换为弧度并应用sin和cos,每个原始特征只映射到两个新特征,减少了特征数量。这种方法在神经网络中有效,但在树模型中可能需谨慎使用。
2090 5
|
JavaScript 索引
vscode中快捷生成自定义vue3模板
vscode中快捷生成自定义vue3模板
2740 1
|
存储 达摩院 量子技术
计算机组成原理:计算机的发展历史
本文介绍计算机发展的四个阶段、微型计算机发展历史。
9740 0
计算机组成原理:计算机的发展历史
|
Web App开发 前端开发 JavaScript
简单快速部署React,上手Web开发更轻松!
React起源于Facebook内部项目,于2013年开源,由于出众的设计思想,以及更加专注于MVC当中的视图层, 使得创建交互式 UI 变得轻而易举。同时React还可以为你应用的每一个组件设计简洁的视图,当数据改变时 React 能有效地更新并正确地渲染组件。
简单快速部署React,上手Web开发更轻松!
|
网络协议 安全 网络性能优化
[ 数据通信面试篇 ] 数通面试题大集合(详解),看完直怼面试官(一)(上)
面试网络方向的岗位,数通知识尤为重要。 这里我总结了200来个面试题,本文讲解前30个面试题。 这些问题搞懂了,什么技术支持工程师呀,远程技术支持工程师,网络工程师呀基本上没什么问题了。 当然了,也不只这些岗位会问道这些题,这里只罗列出来了契合的岗位。
3306 1
[ 数据通信面试篇 ] 数通面试题大集合(详解),看完直怼面试官(一)(上)
|
机器学习/深度学习 人工智能 自然语言处理
全球名校AI课程库(5)| Stanford斯坦福 · 深度学习课程『Deep Learning』
吴恩达与助教在斯坦福开设的深度学习课程,内容覆盖基础知识、各类神经网络、实际应用等排,是很多人的深度学习入门课。
2863 1
全球名校AI课程库(5)| Stanford斯坦福 · 深度学习课程『Deep Learning』
下一篇
开通oss服务