首页 > 解决方案 > 在 typeorm 中查找给定半径内的地方

问题描述

如果我想将半径设为 10 英里,它会给出所有在 10 英里范围内和不在 10 英里范围内的酒店。当我将半径设置为 0.1、0.5 或类似的值时,过滤正在起作用。我使用了MySQL并将坐标存储为geometry。谢谢您的帮助。

if (filter.latitude && filter.longitude) {
      queryBuilder.addSelect(
        'ST_Distance(hotel.coordinate, ST_GeomFromText(:origin , 4326))',
        'distance'
      );
      const radius = +filter.radius || 0;
      queryBuilder
        .andWhere(
          'ST_Distance(hotel.coordinate, ST_GeomFromText(:origin , 4326)) <= :radius '
        )
        .setParameters({
          origin: `POINT(${filter.latitude} ${filter.longitude})`,
          radius
        });
      queryBuilder.addOrderBy('distance', 'ASC');
    }

标签: mysqlgeolocationnestjstypeorm

解决方案


推荐阅读