1.添加依賴前端
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
2.保存地理信息
1、引入mongoTemplate
模板主要封裝了包括保存、建立索引,查詢的功能。
@Resource
private MongoTemplate mongoTemplate;
我這裏讀取的是Excel 文件,將數據信息封裝到一個對象裏面。
注意在對象中添加一個geo 的map字段必須叫geo
在保存geo 的時候封裝了一個方法
private Map getGeoJson(Double lon, Double lat) {
Map<String, Object> map = new HashMap<>(20);
map.put("lng", lon);
map.put("lat", lat);
return map;
}
2、建立索引
爲collection建立索引
private void makeSpatialIndexs() {
mongoTemplate.getCollection("coordinates").createIndex(new BasicDBObject("geo", "2d"), "geo_2d");
}
3、保存
mongoTemplate.save(coordinates);
4、保存後的信息
三、檢索附近幾百米的設備信息
private final double r = 6.2137119 / 3963.2 / 10;
@Override
public List<XX> getDeviceList(double longitude, double latitude, double radius) {
double radius2 = r * radius;
List<XX> list = new ArrayList<>();
try {
Point point1 = new Point(longitude, latitude);
Sphere sphere = new Sphere(point1, radius2);
List<YY> positions = mongoTemplate.find(new Query(Criteria.where("geo").within(sphere)), YY.class);
} catch (MongoException e) {
logger.error(e.getMessage());
}
return list;
}
XX:爲你向前端返回的實體YY:爲mongodb保存的實體