Cómo obtener marcadores en un mapa a partir de una ubicación y distancia

Cómo obtener marcadores en un mapa a partir de una ubicación y distancia

Hola amigos de la #nerdytud

Buscando alguna solución para obtener puntos o marcadores que se encuentran a una determinada distancia en un mapa, me he dado cuenta que hay infinitas posibilidades de conseguir los mismos resultados en diferentres lenguajes de programación. En alguna de estas soluciones podía obtener la distancia entre puntos, u obtener latitud y longitud a x metros. Pero investigando aún un poco más y gracias Marcelo Calderón, he dado con diversos ejemplos en SQL, que a partir de varios de ellos, armé la siguiente solución.

Crear tabla

DROP TABLE IF EXISTS dummy

CREATE TABLE dummy (
  id int IDENTITY (1,1) NOT NULL,
  name nvarchar(50) NULL,
  marker geography NULL
)
INSERT INTO dummy (name, marker)
VALUES ('maker 01', geography::Point(-34.61141025695043, -58.420492128751235, 4326))

INSERT INTO dummy (name, marker)
VALUES ('maker 02', geography::Point(-34.61105263787088, -58.41770799579351, 4326))

INSERT INTO dummy (name, marker)
VALUES ('maker 03', geography::Point(-34.61056918741179, -58.41460467998047, 4326))

Generar consulta

declare @zeroPoint geography = geography::Point(-34.61024688552542, -58.42534424484099, 4326);
declare @distance int = 1000;

select 
  name, 
  marker.Lat as lat,
  marker.Long as lng
  @zeroPoint.STDistance(marker) as meters
from dummy 
where @zeroPoint.STDistance(marker) <= @distance