文章目录
关键字解释
栅栏\围栏:创建的打卡区域
终端:表示个人
轨迹:一个人的位置
一、环境准备
1.1、创建自己的应用
百度地图开放平台:https://lbsyun.baidu.com/
创建自己的应用
1.2、创建鹰眼服务
百度鹰眼:https://lbsyun.baidu.com/trace/admin/service
二、springboot编码
2.1、demo目录结构
2.2、pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zzuli</groupId>
<artifactId>baidumap</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>baidumap</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 网络请求-->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.3、config文件
OkHttpConfig
package com.zzuli.baidumap.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.OkHttp3ClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
/**
* @author niuben
*/
@Configuration
public class OkHttpConfig {
@Bean
public RestTemplate restTemplate(){
return new RestTemplate(new OkHttp3ClientHttpRequestFactory());
}
}
2.4、Controller文件
MapController
package com.zzuli.baidumap.controller;
import com.sun.jndi.toolkit.url.Uri;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.xml.crypto.Data;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @author niuben
*/
@RestController
public class MapController {
private String ak = "uwfV9ybcbHzpaAfXaHcSldiHG8qZNB1y";
private Integer service_id = 229172;
@Resource
private RestTemplate restTemplate;
/**
* 添加栅栏
*/
@GetMapping("/createFence")
public String createFence() throws URISyntaxException {
String url = "http://yingyan.baidu.com/api/v3/fence/createcirclefence";
LinkedMultiValueMap<String,Object> map = new LinkedMultiValueMap<>();
map.add("ak",ak);
map.add("service_id",service_id);
//114.50315217581782, 35.79525687249051
map.add("longitude",114.50315217581782);
map.add("latitude",35.79525687249051);
map.add("radius",5000);
map.add("coord_type","bd09ll");
//请求
ResponseEntity<String> result = restTemplate.postForEntity(new URI(url), map, String.class);
return result.getBody();
}
/**
* 插叙栅栏
*/
@GetMapping("/queryFence")
public String queryFence(String ids) throws URISyntaxException {
String url = "http://yingyan.baidu.com/api/v3/fence/list?ak="+ak;
url += "&service_id="+service_id;
url += "&fence_ids="+ids;
//请求
ResponseEntity<String> result = restTemplate.getForEntity(new URI(url), String.class);
return result.getBody();
}
/**
* 删除栅栏
*/
@GetMapping("/deleteFence")
public String deleteFence(String ids) throws URISyntaxException {
String url = "http://yingyan.baidu.com/api/v3/fence/delete";
LinkedMultiValueMap<String,Object> map = new LinkedMultiValueMap<>();
map.add("ak",ak);
map.add("service_id",service_id);
map.add("fence_ids",ids);
//请求
ResponseEntity<String> result = restTemplate.postForEntity(new URI(url), map, String.class);
return result.getBody();
}
/**
* 创建终端
*/
@GetMapping("/createEntity")
public String createEntity(String name) throws URISyntaxException {
String url = "http://yingyan.baidu.com/api/v3/entity/add";
LinkedMultiValueMap<String,Object> map = new LinkedMultiValueMap<>();
map.add("ak",ak);
map.add("service_id",service_id);
map.add("entity_name",name);
//请求
ResponseEntity<String> result = restTemplate.postForEntity(new URI(url), map, String.class);
return result.getBody();
}
/**
* 删除终端
*/
@GetMapping("/deleteEntity")
public String deleteEntity(String name) throws URISyntaxException {
String url = "http://yingyan.baidu.com/api/v3/entity/delete";
LinkedMultiValueMap<String,Object> map = new LinkedMultiValueMap<>();
map.add("ak",ak);
map.add("service_id",service_id);
map.add("entity_name",name);
//请求
ResponseEntity<String> result = restTemplate.postForEntity(new URI(url), map, String.class);
return result.getBody();
}
/**
* 查询终端
*/
@GetMapping("/queryEntity")
public String queryEntity() throws URISyntaxException {
String url = "http://yingyan.baidu.com/api/v3/entity/list?ak="+ak+"&service_id="+service_id;
//请求
ResponseEntity<String> result = restTemplate.getForEntity(new URI(url), String.class);
return result.getBody();
}
/**
* 给栅栏绑定终端
*/
@GetMapping("/addmonitoredperson")
public String addmonitoredperson(int fenceId,String name) throws URISyntaxException {
String url = "http://yingyan.baidu.com/api/v3/fence/addmonitoredperson";
LinkedMultiValueMap<String,Object> map = new LinkedMultiValueMap<>();
map.add("ak",ak);
map.add("service_id",service_id);
map.add("fence_id",fenceId);
map.add("monitored_person",name);
//请求
ResponseEntity<String> result = restTemplate.postForEntity(new URI(url), map, String.class);
return result.getBody();
}
/**
* 上传轨迹
*/
@GetMapping("/addpoint")
public String addpoint(double longitude,double latitude,String name) throws URISyntaxException {
String url = "http://yingyan.baidu.com/api/v3/track/addpoint";
LinkedMultiValueMap<String,Object> map = new LinkedMultiValueMap<>();
map.add("ak",ak);
map.add("service_id",service_id);
map.add("entity_name",name);
map.add("longitude",longitude); //经度
map.add("latitude",latitude); //纬度
map.add("loc_time",new Date().getTime()/1000);//时间
map.add("coord_type_input","bd09ll");
//请求
ResponseEntity<String> result = restTemplate.postForEntity(new URI(url), map, String.class);
return result.getBody();
}
/**
* 查询监控对象在围栏内/外
*/
@GetMapping("/querystatus")
public String queryStatus(String name) throws URISyntaxException {
String url = "http://yingyan.baidu.com/api/v3/fence/querystatus?"
+"ak="+ak+"&service_id="+service_id+"&monitored_person="+name;
//请求
ResponseEntity<String> result = restTemplate.getForEntity(new URI(url), String.class);
return result.getBody();
}
}
三、测试
3.1、围栏相关操作
3.1.1、创建围栏
3.1.2、删除围栏
3.1.3、查询围栏
3.2、相关操作终端
3.2.1、创建终端
3.2.2、删除终端
3.2.3、查询终端
3.3、围栏绑定终端
3.4、终端上传轨迹\位置
3.5、围栏警报
就是查询终端是否在围栏范围内