使用百度地图api模拟实时定位页面 完整示例

该博客展示了如何使用百度地图API在网页上模拟车辆实时定位。通过在后台生成坐标并写入文件,前端通过定时请求获取最新坐标,实现地图上的标记自动或手动更新。涉及的主要技术包括JavaScript、Ajax、百度地图API以及简单的后端交互。
摘要由CSDN通过智能技术生成

使用百度地图api模拟实时定位页面 完整示例


效果:使用百度地图api在页面上显示车辆的实时位置,并有自动刷新手动刷新两种方式可以选择。每次刷新后,都会在地图上显示车辆的最新位置。

示例运行效果截图:

这里写图片描述

步骤

1. 首先,我们要创建一个一个main方法,用来往一个txt文件中不断地写新的坐标,来模拟GPS设备不断获取的坐标数据。

所以我们先写一个任务,它的作用是产生一个新的位置坐标,并将其写入一个名为position.txt的文档中。

package com.icbc.dataDisplayService.bean;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;

public class TimerTask extends java.util.TimerTask {
   
//    private Position position;
    @Override
    public void run() {
        //随机生成坐标
        //lon的取值范围是121.4600-121.4800
        //lat的取值范围是31.2200-31.2800
        Random randomLon = new Random();
        Random randomLat = new Random();
        double lon = ((double)(1214600+randomLon.nextInt(200)))/10000;
        double lat = ((double)(312200+randomLon.nextInt(600)))/10000;
//        this.position.setLon(lon);
//        this.position.setLat(lat);
        //把他写到文件里
        File positionFile = new File("D:\\Myapplication\\java\\GPSDataDisplayService\\src\\main\\java\\com\\icbc\\dataDisplayService\\position.txt");//文件路径
        try{
            FileWriter fw = new FileWriter(positionFile,true);
            BufferedWriter bw = new BufferedWriter(fw);
                bw.write(String.valueOf(lon)+"\n");//这里要写String类型,先写经度
                bw.write(String.valueOf(lat)+"\n");//写纬度
                bw.flush();
            bw.close();
            fw.close();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

注:
- 经度和纬度都是利用随机数生成的,范围最好不要波动太大
- 文件的路径最写成绝对路径,否则有可能找不到。

之后在main方法中定时执行这个任务,我这里设置的时间是5秒,也就是每隔五秒钟向txt文档中写入一个新的坐标点。

package com.icbc.dataDisplayService.bean;

import com.icbc.dataDisplayService.dao.CarDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.*;
import java.nio.Buffer;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;

public class Main {
   
    public static void main(String[] args) {

Timer timer = new Timer();
        System.out.println("创建");
timer.schedule(new TimerTask(),0,5*1000);//每隔5秒将一个新点的坐标写入txt文件
    }
    }

别忘了创建实体类Positon

package com.icbc.dataDisplayService.bean;

public class Position {
   
    private double lon;
    private double lat;

    public Position(double lon, double lat) {
        this.lon = lon;
        this.lat = lat;
    }

    public double getLon() {
        return lon;
    }

    public void setLon(double lon) {
        this.lon = lon;
    }

    public double getLat() {
        return lat;
    }

    public void setLat(double lat) {
        this.lat = lat;
    }

    @Override
    public String toString() {
        return "Position{" +
                "lon=" + lon +
                ", lat=" + lat +
                '}';
    }
}


2.创建TestController.java 这个Controller用于和前端交互和传递数据,前端页面每发来一次请求,此Controller就去position.txt中读取最新的一条数据并返回此坐标点。
package com.icbc.dataDisplayService.controller;


import com.icbc.dataDisplay
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值