配置文件:
<!-- mongodb -->
<bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean">
<property name="host" value="${mongo.host}" />
<property name="port" value="${mongo.port}" />
</bean>
<!--<mongo:mongo host="${mongo.host}" port="${mongo.port}"></mongo:mongo>-->
<mongo:db-factory mongo-ref="mongo" dbname="${mongo.databaseName}" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</bean>
<mongo:repositories base-package="com.example
.repository.geo" />
代码:
根据经纬度查找附近的地理位置
@param lat
经度,如39.912232
@param lng
维度 116.412323232
@param maxDistance
距离目标点的最大距离 ,单位为角度, 建议 0.5~1.5,一个单位长度误差范围为111km
@param maxCount
结果数目,建议 1~3
@return maxDistance范围内的位置,由近到远排序
*/
List<GeoLocation> serarchNear(double lat, double lng, double maxDistance, int maxCount) {
try {
Point point = new Point(lng, lat);
Query query = new Query(Criteria.where("loc").near(point).maxDistance(maxDistance));
query.limit(maxCount);
List<GeoLocation> find = template.find(query, GeoLocation.class);
return find;
} catch (Exception e) {
return null;
}
}
异常信息:
java.lang.ClassNotFoundException: com.mongodb.MongoException$DuplicateKey
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1858)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1701)
at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:51)
at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:1913)
at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1796)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1607)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1591)
慕姐4208626
相关分类