前端vue仿滴滴打车百度地图定位查找附近出租车或门店信息, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12982

效果图如下:

使用方法


<!-- 官方文档: https://dafrok.github.io/vue-baidu-map/#/zh/start/base --> #安装vue-baidu-map插件 npm install vue-baidu-map --save <!-- center: 地图中心点 zoom:地图放大比例 --> <baidu-map v-show="seen" class="bm-view" :center="centerPoint" :zoom="10"> <bm-control class='bmControl'> <div class="bmTopView"> <!-- 名称 --> <view class="netView">{{infoName}} </view> <!-- 详情 +  打车按钮 --> <view class="rowView"> <view class="midView">{{infoDetail}}</view> <view class="locImg" v-show="followIsHide">打车</view> </view> </div> <!-- 我的位置 附近的车图标 --> <div class="bmBotView"> <image class="userIcon" src="../../static/img/biz/person.svg"></image> <view class="userName">定位</view> <image class="userIcon" src="../../static/img/biz/car.svg"></image> <view class="userName">附近的车</view> </div> <view style="height: 2rpx;"></view> </bm-control> <!-- 定位点 --> <bm-marker title="" v-for="(item,index) in netList" :key="100 + index" :data-index="index" @click="netCurClick(item)" :position="{lng: item.longitude, lat: item.latitude}" :icon="{url: 'static/img/biz/person.svg', size: {width: 34, height: 34}}"> </bm-marker> <!-- 附近的车 --> <bm-marker title="" v-for="(item,index) in nearComList" :key="200 + index" @click="companyCurClick(item)" :position="{lng: item.longitude, lat: item.latitude}" :icon="{url: 'static/img/biz/car.svg', size: {width: 34, height: 34}}"> </bm-marker> </baidu-map>

HTML代码部分


<template> <view class="content"> <!-- center: 地图中心点 zoom:地图放大比例 --> <baidu-map v-show="seen" class="bm-view" :center="centerPoint" :zoom="10"> <bm-control class='bmControl'> <div class="bmTopView"> <!-- 名称 --> <view class="netView">{{infoName}} </view> <!-- 详情 +  打车按钮 --> <view class="rowView"> <view class="midView">{{infoDetail}}</view> <view class="locImg" v-show="followIsHide">打车</view> </view> </div> <!-- 我的位置 附近的车图标 --> <div class="bmBotView"> <image class="userIcon" src="../../static/img/biz/person.svg"></image> <view class="userName">定位</view> <image class="userIcon" src="../../static/img/biz/car.svg"></image> <view class="userName">附近的车</view> </div> <view style="height: 2rpx;"></view> </bm-control> <!-- 定位点 --> <bm-marker title="" v-for="(item,index) in netList" :key="100 + index" :data-index="index" @click="netCurClick(item)" :position="{lng: item.longitude, lat: item.latitude}" :icon="{url: 'static/img/biz/person.svg', size: {width: 34, height: 34}}"> </bm-marker> <!-- 附近的车 --> <bm-marker title="" v-for="(item,index) in nearComList" :key="200 + index" @click="companyCurClick(item)" :position="{lng: item.longitude, lat: item.latitude}" :icon="{url: 'static/img/biz/car.svg', size: {width: 34, height: 34}}"> </bm-marker> </baidu-map> </view> </template>

JS代码 (引入组件 填充数据)


<script> import Vue from 'vue' import BaiduMap from 'vue-baidu-map' import { BmlMarkerClusterer } from 'vue-baidu-map' Vue.use(BaiduMap, { // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ ak: 'dEctYrTTeVr76ANfzG7XwYZGPj' }); export default { components: { }, data() { return { nearComList: [], // 附近商机列表 infoName: '', infoDetail: '', tabbarIsHide: false, followIsHide: false, seen: true, netList: [], netItem: {}, // 中心坐标 {lng: 113.282202, lat:23.13771 } centerPoint: { lng: 113.282202, lat: 23.13771 } }; }, mounted: function(e) { let myThis = this; this.netItem = { 'orgName': '我的地址', 'orgAddr': '详细地址', 'longitude': '113.22', 'latitude': '23.12' }; this.netList.push(this.netItem);           this.infoName = this.netItem.orgName;           this.infoDetail = this.netItem.orgAddr; this.nearComList = [{ 'comName': '车名称', 'comAddr': '车详细地址', 'longitude': '113.262', 'latitude': '23.2128' }, { 'comName': '车名称2', 'comAddr': '车详细地址2', 'longitude': '113.532632', 'latitude': '23.1228' }, { 'comName': '车名称3', 'comAddr': '车详细地址3', 'longitude': '113.42632', 'latitude': '23.1228' }, { 'comName': '车名称4', 'comAddr': '车详细地址4', 'longitude': '113.327632', 'latitude': '23.16228' }, { 'comName': '车名称5', 'comAddr': '车详细地址5', 'longitude': '113.324632', 'latitude': '23.3228' }, { 'comName': '车名称6', 'comAddr': '车详细地址6', 'longitude': '113.1632', 'latitude': '23.2228' } ]; }, methods: { showOrHideTabbar() { this.tabbarIsHide = !this.tabbarIsHide; if (this.tabbarIsHide) { uni.hideTabBar(); } else { uni.showTabBar(); } }, netCurClick(item) { this.followIsHide = false; this.infoName = this.netItem.orgName; this.infoDetail = this.netItem.orgAddr; }, companyCurClick(item) { this.followIsHide = true; this.infoName = item.comName; this.infoDetail = item.comAddr; console.log('客户坐标item = ' + JSON.stringify(item)); }, // 计算两点附近距离 getDistance(lat1, lng1, lat2, lng2) { let EARTH_RADIUS = 6378.137; let radLat1 = this.rad(lat1); let radLat2 = this.rad(lat2); let a = radLat1 - radLat2; let b = this.rad(lng1) - this.rad(lng2); let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); s = s * EARTH_RADIUS; //s = Math.round(s * 10000d) / 10000d; s = Math.round(s * 10000) / 10000; s = s * 1000; //乘以1000是换算成米 return s; }, rad(d) { return d * Math.PI / 180.0; }, }, }; </script>

CSS


<style> .content { display: flex; flex-direction: column; width: 100%; height: 100%; overflow: hidden; } /* 搜索 */ .topView { margin-top: 2px; width: 100%; height: 56px; display: flex; flex-direction: row; } .uni-search { text-align: center; justify-content: center; width: 88%; height: 30px; background-color: #F2F2F2; } .changeIcon { margin-left: -2px; margin-top: 27rpx; width: 12%; height: 24px; } /* .mySwitch { width: 208rpx; margin-left: 3px; height: 56rpx; margin-top: 22rpx; } */ /* 地图 */ .bm-view { width: 100%; height: calc(100vh - 154px); } /* 自定义控件 */ .bmControl { margin-top: calc(100vh - 284px); width: 100vw; margin-left: 0vw; height: 90px; background-color: white; border-radius: 8rpx; } .bmTopView { display: flex; flex-direction: column; margin-left: 26rpx; margin-top: 12rpx; width: 100%; height: 112rpx; } .rowView { display: flex; flex-direction: row; } .netView { font-size: 16px; font-weight: 500; color: #333333; line-height: 26px; font-family: PingFangSC-Semibold, PingFang SC; } .midView { display: flex; flex-direction: row; margin-left: 6rpx; color: #666666; width: 70%; height: 60rpx; line-height: 50rpx; font-size: 13px; } .locImg { margin-left: 2px; margin-top: 0rpx; width: 74px; height: 30px; background-color: #1677FF; border-radius: 32px; color: #FFFFFF; text-align: center; line-height: 30px; } .bmBotView { display: flex; flex-direction: row; margin-left: 6rpx; height: 36px; } .bmBotleftView { width: 70%; display: flex; flex-direction: row; } .userIcon { margin-left: 24rpx; margin-top: 4rpx; width: 20px; height: 20px; } .userName { text-align: center; margin-left: 2px; margin-top: 0rpx; width: auto; height: 24px; line-height: 24px; font-size: 26rpx; color: #999999; border-radius: 3px; } .pullScrollView { display: flex; flex-direction: column; height: auto; width: 100%; background-color: #F2F2F2; } .uni-list { margin-top: 0px; height: 100%; } .uni-list-cell { display: flex; flex-direction: column; margin-bottom: 12px; width: 91%; margin-left: 4.5%; height: auto; background-color: #FFFFFF; border-radius: 12rpx; } .list-text { margin-left: 34rpx; line-height: 44px; width: 100%; font-size: 32rpx; color: #333333; height: 44px; } .list-textDetail { margin-left: 34rpx; line-height: 40rpx; width: 100%; font-size: 28rpx; color: #666666; height: 40rpx; margin-bottom: 40rpx; } .checkbtn { margin-top: -12px; margin-left: 8px; text-align: center; width: 160rpx; font-size: 26rpx; color: #1677FF; background-color: #E7F1FF; height: 34px; line-height: 34px; border-radius: 34rpx; } </style>

前端Vue仿滴滴打车百度地图定位查找附近出租车或门店信息(更新版)的更多相关文章

  1. 百度地图定位SDK 之构想

    百度地图定位 前提 从香港旅游回来,心中油然升起一股热血滂湃,激励自己发现市场需求,向创业奋进,朝着梦想前进. 简介 百度Android定位SDK支持Android1.5以及以上设备,提供: 定位功能 ...

  2. Android 百度地图定位(手动+自动) 安卓开发教程

    近由于项目需要,研究了下百度地图定位,他们提供的实例基本都是用监听器实现自动定位的.我想实现一种效果:当用户进入UI时,不定位,用户需要定位的时候,自己手动点击按钮,再去定位当前位置.  经过2天研究 ...

  3. Android使用百度地图定位并显示手机位置后使用前置摄像头“偷拍”

    今天老板让我验证一下技术可行性,记录下来. 需求 :定位手机的位置并在百度地图上显示,得到位置后使用前置摄像头进行抓拍 拿到这个需求后,对于摄像头的使用不太熟悉,于是我先做了定位手机并在百度地图上显示 ...

  4. Vue中使用百度地图——设置地图标注

    知识点:创建Map实例,为指定的位置设置标注 参考博客:https://www.cnblogs.com/liuswi/p/3994757.html 1.效果图:初始化地图,设置指定经纬度为地图中心点坐 ...

  5. IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息

    IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息 /**当获取到定位的坐标后,回调函数*/ - (void)didUpdateBMKUserLocation:(BMKUserLocati ...

  6. Vue+Antd搭配百度地图实现搜索定位等功能

    前言 最近,在做vue项目的时候有做到选择地址功能,而原项目中又引入了百度地图,所以我就打算通过使用百度地图来实现地址搜索功能啦. 本次教程可能过于啰嗦,所以这里先放上预览地址供大家预览--点我预览, ...

  7. vue 中结合百度地图获取当前城市

    首先需要去百度地图开发者平台申请 ak http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5 在index.html 中引入script ...

  8. 同步和异步概念(由DZW前端框架引发的百度地图api无法加载问题总结)

    首先概念: 在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去:异步是指进程不需要一直等下去,而是继续 ...

  9. Vue中使用百度地图——根据输入框输入的内容,获取详细地址

    知识点:在Vue.js项目中调用百度地图API,实现input框,输入地址,在百度地图上定位到准确地址,获得到经纬度 参考博客:  百度地图的引用,初步了解参考博客:http://blog.csdn. ...

  10. 我的Android进阶之旅------>Android百度地图定位SDK功能学习

    因为项目需求,需要使用百度地图的定位功能,因此去百度地图开发平台下载了百度地图的Android定位SDK最新版本的开发包和示例代码学习. Android 定位SDK地址:http://develope ...

随机推荐

  1. 《HelloTester》第4期

    1.前言 终于到了谈面试的部分了! 我在这也说明一下,有同学说之前简历篇的时候一直在说项目的介绍,而面试官真正关心的是技术啊?我在这做个解释,因为我写的这些文章主要针对的是软件测试的同学,所以其他职位 ...

  2. 碉堡!“万物皆可分”标记模型上线「GitHub 热点速览」

    这周有个让人眼前一亮的图像识别模型 segment-anything,它能精细地框出所有可见物体,它标记出的物体边界线清晰可见.如此出色的模型,自然获得了不少人的赞赏,开源没几天,就拿下了 18k+ ...

  3. 新一代自动化测试神器Playwright

    转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/4bedb73c.html 你好,我是测试蔡坨坨. 说到WebUI自动化测试,首当其冲的当属Selenium,在很长的一段时间 ...

  4. 一个.Net版本的ChatGPT SDK

    ChatGPT大火,用它来写代码.写表白书.写文章.写对联.写报告.写周边...... 啥都会! 个人.小公司没有能力开发大模型,但基于开放平台,根据特定的场景开发应用,却是非常火热的. 为了避免重复 ...

  5. Redis报错MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on

    1.错误信息 org.redisson.client.RedisException: MISCONF Redis is configured to save RDB snapshots, but is ...

  6. Appweb-6.1.1 移植到ARM

    Appweb-6.1.1 移植到ARM 编译环境:ubuntu-12.04 x64 开发平台:Hi3535 arm版 编译版本:appweb-6.1.1.zip ESP下载地址=> ESP we ...

  7. vue中父组件给子组件传值的方法

    顺序............................................. -------------列表组件,注册组件.调用使用组件----------------- 1,子组件 ...

  8. vue上传文件(原生方法)

    前言: 组件库的文件上传不适合项目,这里我们利用input标签实现文件上传 首先input type=file  标签是这个亚子的,而且样式不能改,我们利用css的方法,将一个定位到这个下面来,然后i ...

  9. VMware虚拟机---Ubuntu无法连接网络该怎么解决?

    在学习使用Linux系统时,由于多数同学们的PC上多是Windows系统,故会选择使用VMware创建一个虚拟机来安装Linux系统进行学习. 安装完成之后,在使用时总是会遇到各种各样的问题.本片随笔 ...

  10. 特性介绍 | MySQL 测试框架 MTR 系列教程(二):进阶篇 - 内存/线程/代码覆盖率/单元/压力测试

    作者:卢文双 资深数据库内核研发 序言: 以前对 MySQL 测试框架 MTR 的使用,主要集中于 SQL 正确性验证.近期由于工作需要,深入了解了 MTR 的方方面面,发现 MTR 的能力不仅限于此 ...