仿滴滴打车百度地图定位查找附近出租车或门店信息

news2025/1/24 3:52:51


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

效果图如下:

#

#### 使用方法

```使用方法

#安装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代码部分

```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代码 (引入组件 填充数据)

```javascript

<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

```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>

```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/632480.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝牙耳机可以戴着游泳吗?推荐四款可以游泳的游泳耳机

今年的夏天格外炎热&#xff0c;热衷于户外运动的人们也开始转换健身方式&#xff0c;游泳作为一项锻炼全身又祛暑清凉的运动&#xff0c;自然成为了最佳选择&#xff0c;相信大多数人跟我一样在运动时都离不开耳机&#xff0c;而游泳需要和水接触&#xff0c;这也导致了我所有…

SpringBoot+Mybatis+Thymeleaf实现的物资管理系统

本系统具体使用的技术是&#xff1a;后端使用SpringBootMybatis&#xff0c;前端使用了Thymeleaf框架&#xff0c;数据库使用的是MySql 8.0。开发工具使用的是IDEA。 本系统前端是使用了前辈的管理系统模板&#xff0c;具体的系统模块功能如下图所示&#xff1a; 一、系统首页…

chatgpt赋能python:Python如何删除之前的内容

Python如何删除之前的内容 在Python编程中&#xff0c;删除之前输入或者生成的内容是一个常见的需求。本文将介绍如何在Python中删除之前的内容以及相关的技巧和方法。 为什么需要删除之前的内容&#xff1f; 在Python编程中&#xff0c;我们有时需要重新输入命令或代码段&a…

OpenGl光照之材质

文章目录 设置材质光的属性完整代码 在现实世界里&#xff0c;每个物体会对光产生不同的反应。比如&#xff0c;钢制物体看起来通常会比陶土花瓶更闪闪发光&#xff0c;一个木头箱子也不会与一个钢制箱子反射同样程度的光。有些物体反射光的时候不会有太多的散射(Scatter)&…

6月10日,今日信息差

1、中国科学家实现含氯废塑料高效无害升级回收。近日&#xff0c;中国科学院上海硅酸盐研究所首席研究员黄富强团队采用新型常温脱氯法&#xff0c;将含氯废塑料直接转化成多种高附加值新材料&#xff0c;成功实现高效无害升级回收&#xff0c;可广泛应用于绿色环保、新型储能、…

Linux5.2 LVS+keepalived高可用群集

文章目录 计算机系统5G云计算第三章 LINUX LVSKeepalived群集一、Keepalived 概述1. Keepalived 作用2.Keepalived 实现原理剖析3.VRRP协议&#xff08;虚拟路由冗余协议&#xff09;4.Keepalived 主要模块及其作用5.健康检查方式&#xff08;学名&#xff1a;探针&#xff09;…

chatgpt赋能python:Python怎么删库:谨慎使用

Python怎么删库&#xff1a;谨慎使用 Python是一种强大的编程语言&#xff0c;它被广泛用于各种项目中&#xff0c;不仅仅是数据科学和机器学习。但它也可以被用来执行危险的任务&#xff0c;比如删库。当你需要在Python中进行数据库操作时&#xff0c;一定要特别小心。在这篇…

Stable-Diffusion|文生图 拍立得纪实风格的Lora 图例(三)

上篇【Stable-Diffusion|入门怎么下载与使用civitai网站的模型&#xff08;二&#xff09;】介绍了如何使用c站进行文生图&#xff0c;尤其一些Lora可能随时会下架&#xff0c;所以及时测试&#xff0c;及时保存很关键&#xff0c;更新一些笔者目前尝试比较有意思的Lora。 本篇…

【python】【excel】在UI中加载EXCEL并修改

界面 代码 import tkinter as tk from tkinter import filedialog from pandastable import Table import pandas as pd import pyperclipclass ExcelEditor(tk.Frame):def __init__(self, parentNone):tk.Frame.__init__(self, parent)self.parent parentself.grid()self.cr…

chatgpt赋能python:如何在Python中添加空行?

如何在Python中添加空行&#xff1f; 如果你是一个有经验的Python工程师&#xff0c;在编写代码时你可能会遇到需要添加空行的情况。但是有几种方法可以实现这一点&#xff0c;你应该用哪种方法呢&#xff1f;在本文中&#xff0c;我们将探讨如何在Python中添加空行以及各种添…

TypeScript 5.1发布,新功能更新

文章目录 1&#xff1a;返回类型增加undefined2&#xff1a;getter可以设置和 setter 的不相关类型3&#xff1a;对 JSX 元素和 JSX 标签的异步支持4&#xff1a;支持命名空间属性名称 JSX5&#xff1a;typeRoots在模块更新6&#xff1a;JSX 标签的链接游标7&#xff1a;param …

Python中对文件的基本操作

文章目录 文件和目录路径文件的读取、写入、复制、删除、变更位置及修改名称解压缩zip格式的文件剪切板的应用使用python-docx处理Word文档使用openpyxl处理Excel文档示例&#xff1a;获取Excel文档中的数据生成Word文档 文件和目录路径 os库是Python内置的标准库&#xff0c;…

张天禹移动端学习

文章目录 相关概念&#xff08;一&#xff09;屏幕相关1. 屏幕大小2. 屏幕分辨率3. 屏幕密度 &#xff08;二&#xff09;像素相关1.物理像素2. css 像素3. 设备独立像素4.像素比5.像素之间的关系 &#xff08;三&#xff09;图片高清显示位图像素图片的高清显示&#xff08;媒…

chatgpt赋能python:Python下如何给网页添加背景图片

Python下如何给网页添加背景图片 随着现代互联网的快速发展&#xff0c;人们对于网页设计的要求越来越高&#xff0c;其中非常重要的一项就是背景图。在Python编程中&#xff0c;我们也可以很容易的为网页添加背景图片。 HTML中的background属性 要给网页加上背景图&#xf…

chatgpt赋能python:Python加法表达式,快速简便的计算方式

Python加法表达式&#xff0c;快速简便的计算方式 介绍 Python是一种可读性强、简洁、易于学习的编程语言&#xff0c;同时也是一种高级编程语言&#xff0c;由于其简洁性和可读性&#xff0c;越来越多的程序员们选择Python作为他们的工作语言。在Python中&#xff0c;加法表…

C++技能 - 详解使用Lambda表达式【再也不怕看不懂别人的代码了,干货还是蛮多的】

系列文章目录 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 C技能系列 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everything is for the future of dream w…

C语言之函数初阶(2)

目录 1. 函数是什么 2. 库函数 3. 自定义函数 4. 函数参数 5. 函数调用 6. 函数的嵌套调用和链式访问 7. 函数的声明和定义 8. 函数递归 上一篇博客我们讲解了函数的前六个比较容易理解的部分&#xff0c;这一篇博客我们来讲解最后两个部分 在讲这篇博客之前&am…

Shell免交互操作

目录 一、Here Document 免交互 1.免交互定义 2.格式和使用方法 二、Expect 免交互 1.简介 2.格式和使用 &#xff08;1&#xff09;声明解释器 &#xff08;2&#xff09;spawn&#xff08;跟踪&#xff09; &#xff08;3&#xff09;expect&#xff08;期望&#x…

SpringBoot整合minio服务(超详细)

一、使用docker部署minio 1、拉取镜像 docker pull minio/minio 2、创建目录 mkdir -p /home/minio/config mkdir -p /home/minio/data 3、创建Minio容器并运行 docker run -p 9000:9000 -p 9090:9090 \--nethost \--name minio \-d --restartalways \-e "MINIO_ACC…

基于OpenCV的自动报靶识别实验

基于OpenCV的自动报靶识别实验 问题方案实验结论 问题 户外胸环靶自动报靶问题&#xff0c;目前是通过声电等方式来识别&#xff0c;成本较高&#xff0c;本文尝试使用图像处理的方法来识别。 方案 前提&#xff1a;固定相机 确定靶子的四个顶点&#xff1a;目前使用人工手…