Skip to content

Commit

Permalink
#23 [Fix] 위도 경도 계산 로직 수정_ 2
Browse files Browse the repository at this point in the history
  • Loading branch information
JSoi committed Aug 1, 2022
1 parent 004174c commit fa4f62f
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
import static com.mpnp.baechelin.common.QueryDslSearch.getSearchBooleanBuilder;
import static com.mpnp.baechelin.common.QuerydslLocation.locTwoPointAndConditions;
import static com.mpnp.baechelin.store.domain.QStore.store;
import static com.querydsl.core.types.dsl.Expressions.constant;
import static com.querydsl.core.types.dsl.MathExpressions.*;

@Repository
@Transactional
Expand Down Expand Up @@ -57,14 +59,11 @@ public Page<Store> findBetweenTwoPointOrder(BigDecimal latStart,
List<Tuple> tupleList =
queryFactory
.select(store,
// ((store.latitude.subtract(nowLat)).abs().add(store.longitude.subtract(nowLng)).abs()).as(diff),
MathExpressions.acos(MathExpressions.cos(MathExpressions.radians(Expressions.constant(nowLat)))).multiply(6371)
.multiply(MathExpressions.cos(MathExpressions.radians(store.latitude)))
.multiply(MathExpressions.cos(MathExpressions.radians(store.longitude)
.subtract(MathExpressions.radians(Expressions.constant(nowLng)))))
.add(MathExpressions.sin(MathExpressions.radians(Expressions.constant(nowLat)))
.multiply(MathExpressions.sin(MathExpressions.radians(store.latitude)))).doubleValue().as(path)
)
acos(sin(radians(Expressions.constant(nowLat)))
.multiply(sin(radians(store.latitude)))
.add(cos(radians(Expressions.constant(nowLat))).multiply(cos(radians(store.latitude)))
.multiply(cos(radians(Expressions.constant(nowLng)).subtract(radians(store.longitude)))))).multiply(6371).as(path)
)
.from(store)
.where(builder)
.orderBy(path.desc())
Expand Down Expand Up @@ -97,13 +96,10 @@ public Page<Store> findBetweenOnePointOrder(BigDecimal latStart,
List<Tuple> tupleList =
queryFactory
.select(store,
// ((store.latitude.subtract(nowLat)).abs().add(store.longitude.subtract(nowLng)).abs()).as(diff),
MathExpressions.acos(MathExpressions.cos(MathExpressions.radians(Expressions.constant(lat)))).multiply(6371)
.multiply(MathExpressions.cos(MathExpressions.radians(store.latitude)))
.multiply(MathExpressions.cos(MathExpressions.radians(store.longitude)
.subtract(MathExpressions.radians(Expressions.constant(lng)))))
.add(MathExpressions.sin(MathExpressions.radians(Expressions.constant(lat)))
.multiply(MathExpressions.sin(MathExpressions.radians(store.latitude)))).doubleValue().as(path)
acos(sin(radians(Expressions.constant(lat)))
.multiply(sin(radians(store.latitude)))
.add(cos(radians(Expressions.constant(lat))).multiply(cos(radians(store.latitude)))
.multiply(cos(radians(Expressions.constant(lng)).subtract(radians(store.longitude)))))).multiply(6371).as(path)
)
.from(store)
.where(builder)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public StorePagedResponseDto getStoreInOnePointRange(BigDecimal latStart, BigDec
* @return 위도, 경도, 카테고리, 배리어 프리, 페이징을 만족하는 배리어 프리 업장 리턴
*/
public StorePagedResponseDto getStoreInOnePointRange(BigDecimal lat, BigDecimal lng, String category, List<String> facility, Pageable pageable, String socialId) {
BigDecimal[] range = QuerydslLocation.getRange(lat, lng, 3);
BigDecimal[] range = QuerydslLocation.getRange(lat, lng, 2);
if (range == null)
return getStoreInOnePointRange(null, null, null, null,lat,lng, category, facility, pageable, socialId);
return getStoreInOnePointRange(range[0], range[1], range[2], range[3],lat,lng, category, facility, pageable, socialId);
Expand Down

0 comments on commit fa4f62f

Please sign in to comment.