1.数据库中有如下两列字段 (纬度,经度)
LocationLat decimal(18, 6)
LocationLng decimal(18, 6)
以下代码可根据当前所在经纬度获取附近多少米的数量
配合高德API即可实现小黄车在地图上显示的效果。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CalcDealerOf5km
{
class Program
{
static void Main(string[] args)
{
double recLng = 113.692100;//用户实时地址经度
double recLat = 34.752853;//用户实时地址维度
double earthR = 6371;//地球半径千米
double dis = 0.5;//0.5千米距离
double dlng = 2 * Math.Asin(Math.Sin(dis / (2 * earthR)) / Math.Cos(recLat * Math.PI / 180));
dlng = dlng * 180 / Math.PI;//角度转为弧度
double dlat = dis / earthR;
dlat = dlat * 180 / Math.PI;
double minlat = recLat - dlat;//最小维度
double maxlat = recLat + dlat;
double minlng = recLng - dlng;//最小经度
double maxlng = recLng + dlng;
string sql = $@"SELECT * FROM Base_DealerInfo WHERE locationlng is not null
AND LocationLat >= {minlat} AND LocationLat<={maxlat}
AND LocationLng >= {minlng} AND LocationLng<={maxlng}
";
List<Base_DealerInfo> lstDealer = Base_DealerInfo.Fetch(sql);
}
}
}