c# - 在地图上显示数据库中最近的实体
问题描述
我正在使用 C# 在 XAMARIN 手机应用程序中设置地图屏幕,我正在尝试为其编写一些 API 以获取最近的实体位置。我在 MySQL 数据库中存储了一些具有纬度和经度的实体(标记位置)。我想根据用户的当前位置显示最近的标记位置。
是否有任何指南或源代码帮助,我可以创建 Web API 以根据当前位置在一定距离范围内获取最近的纬度/经度。所有纬度/经度都保存在 MySQL 数据库中,我使用 C# 作为 API。
如果有人可以提供,谢谢您的帮助。
解决方案
您可以从下面的代码中获取(地雷、公里、海里)中两点之间的距离。
public double distance(double lat1, double lon1, double lat2, double lon2, char unit)
{
if ((lat1 == lat2) && (lon1 == lon2))
{
return 0;
}
else
{
double theta = lon1 - lon2;
double dist = Math.Sin(deg2rad(lat1)) * Math.Sin(deg2rad(lat2)) + Math.Cos(deg2rad(lat1)) * Math.Cos(deg2rad(lat2)) * Math.Cos(deg2rad(theta));
dist = Math.Acos(dist);
dist = rad2deg(dist);
dist = dist * 60 * 1.1515;
if (unit == 'K')
{
dist = dist * 1.609344;
}
else if (unit == 'N')
{
dist = dist * 0.8684;
}
return (dist);
}
}
private static double deg2rad(double deg)
{
return (deg * Math.PI / 180.0);
}
private static double rad2deg(double rad)
{
return (rad / Math.PI * 180.0);
}
其中单位为 M、K 或 N。
推荐阅读
- ios - HTTP2 NSPOSIXErrorDomain 代码=100“协议错误”
- python-3.x - 错误:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
- javascript - Angular 8 中多个项目之间共享的模块?
- java - orElse 的 Java 可选工作不像 else
- c# - 组合框。选择物品
- php - 403 不允许您执行此操作。登录后注册页面上的yii2
- scheduling - 是否有 MiniZinc 谓词来模拟时间相关的资源界限(如累积)?
- javascript - 在 ajax 请求中创建的选择标签不会显示在 HTML 文件中
- amazon-web-services - AWS SQS 不会触发 lambda 别名
- python-3.x - 输入[0][3] == (1 + coords + classes)*函数'getMemoryShapes'中的锚点