MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

这篇具有很好参考价值的文章主要介绍了MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

一、实现效果

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

二、安装MongoDB

可以自行参考菜鸟链接:MongoDB 教程 | 菜鸟教程 (runoob.com)

1.下载mongodb数据库安装包:

网盘链接:https://pan.baidu.com/s/4rb1fOkc

2.进入\mongodb-win32-x86_64-windows-5.0.9\bin路径下创建db文件夹

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

3.启动服务

在bin目录下输入cmd+回车,输入命令:mongod --dbpath+你自己的db文件夹路径

比如我的文件目录为:E:\MongoDB\mongodb-win32-x86_64-windows-5.0.9\bin\db

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

4.测试是否启动服务
上一个黑框不要关!!!!!!!

在bin目录下再次输入cmd+回车,输入命令:mongo.exe将会看到如下画面2+2=4就证明连接成功了!!!(你太棒了)

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

三、向MongoDb中添加坐标数据
1.我这里使用是的WindowsForm模拟GPS向mongod添加的数据,大家可以自行克隆源码

git地址:https://gitee.com/ctrlzs/indowsforms.git

2.如何使用程序:
  • 坐标数据来源:你需要一个txt文本,将坐标数据放入文档中,然后将文件路径复制下来

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

  • 最好和你的WindowsForm项目放在一起

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

  • 进入WindowsForm项目找到From1的设计随便双击个控件
  • 找到下面这段代码
        private void button3_Click(object sender, EventArgs e)
        {

            //文件路径
            //string filePath = @"C:\D盘\新建 文本文档.txt";
            string filePath = @"D:\桌面\代码\winfrom\坐标数据.txt";

            //文本读取器
            using (TextReader reader = new StreamReader(filePath, System.Text.Encoding.UTF8))
            {
                //一次性读完
                string textContent = reader.ReadToEnd();

                //输出读取的内容
                //Console.WriteLine(textContent);

                textBox1.Text = textContent;
            }

        }
  • 将filePath的参数路径换成你的txt文档位置

    然后运行项目点击获取坐标你将会获得一大批数据,也就是你txt里的坐标数据

    然后点击添加就会自动在你的mongodb中创建一个名为myDB06的文档数据库和名为tutorial0文档,你会发现有个进度条我这里有428条所以设置进度条数据最大为428,你可以根据自己的数据量进行自己更改,这里就不浪费时间了,自己百度如何更改

    到这里MongoDb基本配置完毕!!!!

四、打开项目配置MongoDb

我这里是服务器端使用的是ABP项目

1.下载包:MongoDB.Driver

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

2.引用命名空间

using MongoDB.Bson;
using MongoDB.Driver;

读取mongodb数据代码如下:

这里有个MongoDto,你需要自行创建

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

        public async Task GetLatService()
        {
            //连接mongodb数据库
            string connectionString = "mongodb://127.0.0.1:27017";

            //创建了一个MongoClient对象 mongoClient,并传入连接字符串作为构造函数参数,以创建与 MongoDB 服务器的连接。
            MongoClient mongoClient = new MongoClient(connectionString);

            //通过GetDatabase方法从mongoClient 获取了一个名为 "myDB06" 的数据库的引用,并将其赋值给 database。
            IMongoDatabase database = mongoClient.GetDatabase("myDB06");

            //定义了一个常量字符串collectionName,表示要查询的集合的名称,这里是 "tutorial0"。
            const string collectionName = "tutorial0";

            //使用 GetCollection<BsonDocument>方法从database 中获取了一个名为 collectionName 的集合的引用,并将其赋值给 collection。这里的 BsonDocument 表示查询结果的文档类型。
            var collection = database.GetCollection<BsonDocument>(collectionName);

            //创建了一个空的 BsonDocument 对象 filter,用作查询的过滤条件。
            var filter = new BsonDocument();

            //使用collection 的 Find 方法,结合 filter 对象执行查询操作,并通过 ToListAsync 方法返回查询结果的一个异步可枚举集合。
            var list = Task.Run(async () => await collection.Find(filter).ToListAsync()).Result;

            var resultList = list.Select(bsonDocument => bsonDocument.ToDictionary()).Select(dictionary => new MongoDto
            {
                x = dictionary.GetValueOrDefault("x").ToString(),
                y = dictionary.GetValueOrDefault("y").ToString()
            }).ToList();

            foreach (var item in resultList)
            { 
                //这里是所有配置完后通过SignalR发送消息(所有配置完毕后把注释删掉!!)
                
                //var a = (item.y).Replace("\r", "");
                //x:经度 y:纬度
                //await _hub.Clients.All.SendAsync("ReceiveLog", item.x,a);    

                //Thread.Sleep(2000);
            }
        }

五、配置SignalR实现实时发送消息

1.常规操作下载包ABP项目下载:Volo.Abp.AspNetCore.SignalR

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

2.进入配置项配置SignalR
  • 首先将依赖加入项目中

    以下内容漂红线的同学看这里!!

    1.检查是否安装成功上面这个包

    2.试试引用命名空间using Volo.Abp.AspNetCore.SignalR;

    3.看看包版本是否匹配

    typeof(AbpAspNetCoreSignalRModule)
    

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

  • 打开配置项注入服务: services.AddSignalR();

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

  • 创建一个类继承Hub类来作为客户端和服务端的通信中心

    继承飘红线的引用命名空间:

    using Microsoft.AspNetCore.SignalR;
    

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

  • 然后找到Program.cs

    app.MapHub<ChatHub>("/Chat");
    

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

  • 马上了不要着急哦,我们回到你Mongodb数据获取的方法中,使用构造函数将SignalR引过来,就可以使用了

            readonly IHubContext<ChatHub> _hub;
    
            public MapService(IHubContext<ChatHub> hub)
            {
                _hub = hub;
            }
    

像这样:

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

  • 然后可以运行你的项目在地址栏中输入上面Program.cs中你自己写的地址,我这里是/Chat,看到这段话恭喜你配置成功!!!(你太棒了)

    MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

六、配置Hangfire定时任务

1.下载NuGet包(注意:这里你如果使用的是其他数据库请参阅其他文档,本项目是MySql)

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

2.配置Hangfire
  • 首先将包依加进去(看清楚是Hangfire那一行)

        typeof(AbpBackgroundWorkersHangfireModule),//Hangfire
    

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

  • 然后进入appsettings.json配置连接字符串

    换成你自己的连接字符串:

        "HangfireConnection": "Server=10.31.60.8;Database=hangfiretest;uid=root;pwd=2334362423;port=3306;Allow User Variables=true;"
    

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

  • 配置连接

    代码在这可以直接复制粘贴

    
    ConfigureHangfire(context, configuration);//将配置写入项目中
    
        //配置Hangfire数据库连接
        private void ConfigureHangfire(ServiceConfigurationContext context, IConfiguration configuration)
        {
            context.Services.AddHangfire(config =>
            {
                config.UseStorage(new MySqlStorage(configuration.GetConnectionString("HangfireConnection"), new MySqlStorageOptions { }));
            });
        }
    

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

  • 打开仪表盘、调用需要执行的方法

            //授权Hangfire仪表盘
            app.UseHangfireDashboard();
    
            var jobId = BackgroundJob.Enqueue<MapService>(
                x => x.GetLatService());
    

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

3.配置完成后运行项目,在地址栏输入/hangfire即可看到如下画面(恭喜你hangfire配置成功!!!)

MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位

七、配置前端项目

1.vue2中引入百度地图

百度地图博客地址:vue&百度地图绘制行进路线/路书/路线规划/线路展示_vue 百度地图路书代码-CSDN博客

signalr博客地址:vue +signalR - 飞天猪皮怪 - 博客园 (cnblogs.com)

自行配置这里就不教了

2.各位大佬我代码直接奉上,就不做讲解了(粘过去就能用),觉得移动图片丑的联系我更换QQ:2362933015

记得改signalR广播地址和标识改成自己的文章来源地址https://www.toymoban.com/news/detail-741676.html

npm install vue-baidu-map --save     //下载百度地图依赖包
npm install @aspnet/signalr          //下载signalr依赖包
<template>
  <div>
    <baidu-map
      class="map"
      :scroll-wheel-zoom="true"
      :center="{ lng: 116.404, lat: 39.915 }"
      :zoom="15"
    >
      <bm-marker
        :position="{ lng: lng, lat: lat }"
        :dragging="true"
        animation="BMAP_ANIMATION_DROP"
        :icon="{
          url: 'https://i.postimg.cc/BQpNQLd9/JVOG-OY-6-J7-M3-ZXU-IX6-7.gif',
          size: { width: 300, height: 157 },
        }"
      ></bm-marker>
    </baidu-map>
  </div>
</template>
<script>
import BaiduMap from "vue-baidu-map/components/map/Map.vue";
import BmMarker from "vue-baidu-map/components/overlays/Marker.vue";
import * as signalR from "@aspnet/signalr";
export default {
  computed: {},
  components: {
    BmMarker,
    BaiduMap,
  },
  data() {
    return {
      lng: "", //经度
      lat: "", //纬度
      connection: "", //signalr连接
      messages: [], //返回消息
      play: false,
      path: [],
    };
  },
  methods: {},
  created: function () {
    let thisVue = this;
    this.connection = new signalR.HubConnectionBuilder()
      .withUrl("http://localhost:44382/Chat", {
        //这里的地址要输入自己的signalR广播地址
        skipNegotiation: true,
        transport: signalR.HttpTransportType.WebSockets,
      })
      .configureLogging(signalR.LogLevel.Information)
      .build();
      //这里的ReceiveLog改成自己的广播地址标识
    this.connection.on("ReceiveLog", function (user, message) {
      thisVue.messages.push({ user, message });
      //经度
      thisVue.lng = user;
      //纬度
      thisVue.lat = message;

      console.log(thisVue.lng, thisVue.lat);
    });
    this.connection.start();
  },
};
</script>
 
<style scoped>
.map {
  height: 800px;
  width: 100%;
}
</style>

到了这里,关于MongoDB+SignalR+Hangfire+Vue2+百度地图实现GPS实时定位的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue中使用百度地图

    3.在页面使用 4.百度地图初始化函数及批量生成自定义图标点 5.需求1:切换中心点 6.需求2:鼠标滑过自定义图标改变 需求3:鼠标滑过展示信息窗口

    2024年02月14日
    浏览(31)
  • 【Vue】集成百度地图

    1、获取百度地图 ak 密钥 2、登录网址 https://lbsyun.baidu.com/ 3、注册百度地图开放平台账号,填写认证信息,并且创建应用 注意 BaiduMap 组件容器本身是一个空的块级元素,如果容器不定义高度,百度地图将渲染在一个高度为 0 不可见的容器内。 没有设置center 和 zoom 属性的地图

    2024年02月10日
    浏览(27)
  • stm32 m5311上传gps数据上onenet云平台实现地图定位

    新手,第一次写博客,如有不足请大家见谅并指出。下面开始正文。 本文是帮一个朋友做一个NB_Iot的小东西这个过程的学习记录吧。 NB模块是M5311,然后还有一个stm32f103的最小系统开发板,后面开始了漫漫学习NB模块上云的道路。M5311我搜到的例程都是用onenet平台,自然而然地

    2023年04月08日
    浏览(67)
  • vue3 中使用百度地图

    最近一个项目要用到地图,因为微信小程序用的也是百度地图,所以想着网页端也用百度地图,在网上查了很多方法,包括引入百度地图第三方库,还是有问题,发现最简单的方法就是在index.html中引入script,然后直接在相关页面肝就完事。 在百度开发者平台上面申请,其他

    2023年04月17日
    浏览(40)
  • vue项目中使用百度地图(一)

    vue+百度地图的基础使用。 首先,第一步申请key,保存好这个密钥。 链接:jspopular | 百度地图API SDK (baidu.com) 使用百度地图有两种方式:1.javaScript API    2.直接引用组件。 以2.0版本为例。 方法1:百度地图javaScript API 引入方式有两种。 方法1:index.html中引用 在想要展示地图的

    2024年02月12日
    浏览(29)
  • vue3使用百度地图(详)

    提示:该博客vue采用vue3,使用百度地图通过组件 vue-baidu-map-3x : 组件官网:https://map.heifahaizei.com/doc/baidu-map.html 下面会从头开始介绍如何使用百度地图以及常用组件功能(附带遇到的问题和解决方案) 步骤:1. 进入百度地图开放平台 | 百度地图API SDK | 地图开发 2.打开顶部控制

    2024年02月06日
    浏览(46)
  • vue项目中使用百度地图,详细过程

    简述:我们在写项目的时候,有时候难免会用到地图,这里给大家介绍一下如何在vue项目中使用百度地图,获取可视区域坐标,以及添加线路、站点。 1、 首先,在项目中安装百度地图依赖。 2、 全局注册,在main.js中一次性引入百度地图组件库的所有组件,  //   ak 是在百

    2023年04月15日
    浏览(36)
  • VUE百度地图加载3D模型(MapVThreeGallery)

    参考百度开发文档 补充下(里面有免费的可以拿来玩)3D模型下载网址 步骤 1: npm install mapv-three 安装插件 2:在index.html加载百度地图 注:加载model.glb文件需要是请求服务器来的,没有服务器资源的可以像我一样在本地用VS插件(Live Server)起了个小型服务器放3D模型数据 ----使用

    2024年02月11日
    浏览(32)
  • 前端系列——vue2+高德地图web端开发(使用和引入)

    本人非专业前端开发,其实是搞后端的,但是正好接了一个项目需要我负责全栈,所以写了这个系列的文章,如果以后项目可以开源我会放出来的 本次我们要实现的是vue2+高德地图的网页开发 本文需要大家系统学过vue以及初步了解高德地图的情况下理解起来会十分省力 高德

    2024年01月16日
    浏览(37)
  • vue2嵌入高德地图选择地址后显示地址和经纬度

    以高德地图为里,申请key,选择js api服务,获取key和密钥. vue2项目代码引入相关依赖: 封装成组件: 页面引用:

    2024年01月20日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包