百度地图API开发:停车场分布标注和检索静态版

简介: 百度地图API开发:停车场分布标注和检索静态版




项目描述

  • 基于百度地图jsAPI接口开发;
  • 实现标注和弹窗功能;
  • 实现标注的检索功能(名称和地址);
  • 静态HTML页面;
  • 卫星地图和行政地图的切换;


外部资源调用

    <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript"
            src="http://api.map.baidu.com/api?v=2.0&ak=3HGqGo1RHf8zsLZCMj3F***"></script>
    <script type="text/javascript" src="js/functions.js"></script>
    <script type="text/javascript" src="js/poidata.js"></script>
    <!--layui封装库-->
    <script src="js/layui/layui.js" charset="utf-8"></script>
    <link rel="stylesheet" href="js/layui/css/layui.css">
    <!--核心样式表-->
    <link rel="stylesheet" href="css/common.css">


核心代码

构建容器

<div class="headNav">
    <div class="title">停车场分布图</div>
    <div class="searchBox">
        <div class="layui-input-inline"><input type="text" placeholder="停车场名称" class="layui-input" id="name"></div>
        <div class="layui-input-inline"><input type="text" placeholder="停车场地址" class="layui-input" id="address"></div>
        <div class="layui-input-inline"><button id="search" class="layui-btn layui-btn-normal" style="margin-bottom: 3px;">搜索</button></div>
        <div class="layui-input-inline"><button id="reload" class="layui-btn layui-btn-normal" style="margin-bottom: 3px;">重载</button></div>
    </div>
</div>
</div>
<div id="container"></div>

调用地图

  /*初始化地图*/
    intMap(data);
    /*搜索功能*/
    $(function () {
        //重载页面;
        $("#reload").click(function () {
            window.location.href = window.location.href;
        })
        $("#search").click(function () {
            var name = $("#name").val();
            var address = $("#address").val();
            if (name == "" && address == "") {
                layer.msg("停车场名称或地址不能为空", {icon: 2, time: 1000});
                return false;
            } else {
                var newData = filterData(data, name, address);
                if (newData == "") {
                    layer.msg("没有搜索对应的数据", {icon: 2, time: 1000});
                } else {
                    intMap(newData);
                }
            }
        })
    })
    // 百度地图API功能
    var map;
    function intMap(markerArr) {
        map = new BMap.Map("container", {enableMapClick: false, minZoom: 2, maxZoom: 17})
        map.centerAndZoom(new window.BMap.Point(markerArr[0].lng, markerArr[0].lat), 14);
        map.enableScrollWheelZoom();
        //地图类型控件
        map.addControl(new BMap.MapTypeControl({mapTypes: [BMAP_NORMAL_MAP, BMAP_SATELLITE_MAP, BMAP_HYBRID_MAP]}));
        map.setMapType(BMAP_NORMAL_MAP);
        //添加缩放控件
        var ctrlNav = new window.BMap.NavigationControl({
            anchor: BMAP_ANCHOR_TOP_LEFT,
            type: BMAP_NAVIGATION_CONTROL_LARGE
        });
        map.addControl(ctrlNav);
        //绘制标注;
        var allponits = [];
        for (var i = 0; i < markerArr.length; i++) {
            var p0 = markerArr[i].lng;
            var p1 = markerArr[i].lat;
            var txt = markerArr[i].name;
            var cat = 0;
            var pos = new window.BMap.Point(p0, p1);
            //添加标注;
            var maker = addMarker(pos, cat);
            addInfoWindow(maker, markerArr[i]);
            //文本标签;
            addLabel(pos, txt);
            //设置最佳视野POI;
            allponits.push(pos);
        }
        //map.setViewport(allponits);
    }


封装函数

筛选条件

//筛选条件封装函数-精确匹配;
function filterData(data, name, address) {
    var filters = [
        o => o.name.includes(name),
        o => o.address.includes(address)
    ];
    var result = data.filter(o => filters.every(fn => fn(o)));
    return result;
}

文本标签

//文本标签;
function addLabel(point, txt) {
    var opts = {
        position: point,
        offset: new BMap.Size(0, 20)    //设置文本偏移量
    }
    var label = new BMap.Label(txt, opts);  // 创建文本标注对象
    label.setStyle({
        color: "#fff",
        fontSize: "10px",
        height: "24px",
        lineHeight: "20px",
        padding: "2px 5px",
        border: "1px solid rgba(230, 0, 0, 0.7)",
        background: "rgba(230, 0, 0, 0.7)",
        fontWeight: "bold",
        transform: 'translateX(-50%)',
        fontFamily: "微软雅黑"
    });
    map.addOverlay(label);
}

定义图标类型

//定义图标类型;
function addMarker(point, cat) {
    var imgUrl = 'images/icon' + cat + '.png';
    var myIcon = new BMap.Icon(imgUrl, new BMap.Size(32, 41));
    var marker = new BMap.Marker(point, {icon: myIcon});
    map.addOverlay(marker);
    return marker;
}

信息窗口

//添加信息窗口
function addInfoWindow(marker, pos) {
    var title = '<div class="popTitle" style="background:transparent !important;font-weight: bold;">' + pos.name + '</div>';
    var html = [];
    html.push('<div>');
    html.push('<div class="infoItems" style="background:transparent !important;"><span>地址:</span><span>' + pos.address + '</span></div>')
    html.push('<div class="infoItems" style="background:transparent !important;"><span>地上车位数量:</span><span>' + pos.parking_up + '</span></div>')
    html.push('<div class="infoItems" style="background:transparent !important;"><span>地下车位数量:</span><span>' + pos.parking_down + '</span></div>')
    html.push('<div class="infoItems" style="background:transparent !important;"><span>面向对象:</span><span>' + pos.parking_obj + '</span></div>')
    html.push('<div class="infoItems" style="background:transparent !important;"><span>收费模式:</span><span>' + pos.parking_mode + '</span></div>')
    html.push('<div class="infoItems" style="background:transparent !important;"><span>联系电话:</span><span>' + pos.parking_tel + '</span></div>')
    html.push('<div class="infoItems" style="background:transparent !important;"><span>备注信息:</span><span>' + pos.parking_other + '</span></div>')
    html.push('</div>');
    var opts = {
        width: 310, // 信息窗口宽度
        height: 200, // 信息窗口高度
        title: '<h4>' + title + '</h4>', // 信息窗口标题
        enableMessage: true, //设置允许信息窗发送短息
    }
    var infoWindow = new BMap.InfoWindow(html.join(""), opts);
    var openInfoWinFun = function () {
        marker.openInfoWindow(infoWindow);
    };
    marker.addEventListener("click", openInfoWinFun);
    return openInfoWinFun;
}


@lockdata.cn

相关文章
|
1天前
|
监控 供应链 搜索推荐
阿里妈妈商品详情API接口:开发、应用与收益的深度剖析
阿里妈妈是阿里巴巴旗下的数字营销平台,其商品详情API接口为开发者提供了获取淘宝、天猫等电商平台商品详细信息的工具。本文介绍了该接口的开发流程、应用场景及带来的收益,揭示了其在电商生态中的重要地位。
18 6
|
1天前
|
供应链 搜索推荐 API
1688APP原数据API接口的开发、应用与收益(一篇文章全明白)
1688作为全球知名的B2B电商平台,通过开放的原数据API接口,为开发者提供了丰富的数据资源,涵盖商品信息、交易数据、店铺信息、物流信息和用户信息等。本文将深入探讨1688 APP原数据API接口的开发、应用及其带来的商业收益,包括提升流量、优化库存管理、增强用户体验等方面。
18 6
|
3天前
|
监控 搜索推荐 API
京东商品详情API接口的开发、应用与收益探索
在数字化和互联网高速发展的时代,京东通过开放商品详情API接口,为开发者、企业和商家提供了丰富的数据源和创新空间。本文将探讨该API接口的开发背景、流程、应用场景及带来的多重收益,包括促进生态系统建设、提升数据利用效率和推动数字化转型等。
16 3
|
8天前
|
供应链 搜索推荐 API
探索1688榜单商品详细信息API接口:开发、应用与收益
本文深入探讨了1688榜单商品详细信息API接口的开发与应用,涵盖接口概述、开发条件、调用方法及数据处理等内容。该API帮助企业高效获取1688平台商品信息,应用于商品信息采集、校验、同步与数据分析等领域,有效提升了企业的运营效率、库存管理、销售转化率及市场策略制定能力,降低了采购成本,提升了客户满意度。
34 9
|
11天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
44 10
|
11天前
|
存储 API 数据库
使用Python开发获取商品销量详情API接口
本文介绍了使用Python开发获取商品销量详情的API接口方法,涵盖API接口概述、技术选型(Flask与FastAPI)、环境准备、API接口创建及调用淘宝开放平台API等内容。通过示例代码,详细说明了如何构建和调用API,以及开发过程中需要注意的事项,如数据库连接、API权限、错误处理、安全性和性能优化等。
56 5
|
10天前
|
数据可视化 搜索推荐 API
速卖通获得aliexpress商品详情API接口的开发、应用与收益。
速卖通(AliExpress)作为阿里巴巴旗下的跨境电商平台,为全球消费者提供丰富商品。其开放平台提供的API接口支持开发者获取商品详情等信息,本文探讨了速卖通商品详情API的开发流程、应用场景及潜在收益,包括提高运营效率、降低成本、增加收入和提升竞争力等方面。
26 1
|
24天前
|
新能源 API
百科-百度免费API接口教程
该接口用于从百度百科获取指定名词的基础解释。支持POST或GET请求,需提供用户ID、用户KEY及查询内容。返回状态码和解释内容或错误提示。示例:https://cn.apihz.cn/api/zici/baikebaidu.php?id=88888888&key=88888888&words=汽车。建议使用个人ID与KEY以享受更高调用频次。
|
24天前
|
JSON API 数据格式
探索后端开发:从零构建简易RESTful API
在数字时代的浪潮中,后端开发如同搭建一座桥梁,连接着用户界面与数据世界。本文将引导读者步入后端开发的殿堂,通过构建一个简易的RESTful API,揭示其背后的逻辑与魅力。我们将从基础概念出发,逐步深入到实际操作,不仅分享代码示例,更探讨如何思考和解决问题,让每一位读者都能在后端开发的道路上迈出坚实的一步。
|
22天前
|
安全 测试技术 API
构建高效RESTful API:后端开发的艺术与实践####
在现代软件开发的浩瀚星空中,RESTful API如同一座桥梁,连接着前端世界的绚丽多彩与后端逻辑的深邃复杂。本文旨在探讨如何精心打造一款既高效又易于维护的RESTful API,通过深入浅出的方式,剖析其设计原则、实现技巧及最佳实践,为后端开发者提供一份实用的指南。我们不深入晦涩的理论,只聚焦于那些能够即刻提升API品质与开发效率的关键点,让你的API在众多服务中脱颖而出。 ####
30 0