回到主页

地点定位的实用简易操作Point

scala结合slick操作postSql数据库坐标定位问题

· scala,slick

注意点:

1创建的时候要必须点定义

val wktReader = new WKTReader() wktReader 用于把前端传进来的Point类型的定位转成postSql数据库存的类型geom.Geometry
broken image

2.传入方式和转过过程举例: val point = (req.body \ "point").as[String] //用户定位 val location = wktReader.read(point).asInstanceOf[Point]

broken image

3.slick层存储方式的定义类型:

point: com.vividsolutions.jts.geom.Geometry

broken image

4.silck返回到scala的时候不能直接返回,需要类型转换:

ret为从slcik直接查询返回的geom.Geometry类型 显示转换: ret.cllLocation.asInstanceOf[Point].toText

broken image

在此处添加文本段落简易基本操作:

1.根据传进来的定位做圆半径筛选。

比如当前定位的3.5公里内的位置筛选:

.filter(r => {(r.cllLocation <-> apPoint) < 3.5.bind})

broken image

2.根据传进来的定位做距离由近到远排序: .

sortBy( i => (i.orid, i.cllLocation <-> point)) 去每一个类别的第一项在postSql中用去重的方式可直接获取。

map(i => (i.orid, i.cllAdd, i.cllLocation)).distinctOn(_._1)

broken image
broken image