首页 > 解决方案 > 在地图上显示数据库中最近的实体

问题描述

我正在使用 C# 在 XAMARIN 手机应用程序中设置地图屏幕,我正在尝试为其编写一些 API 以获取最近的实体位置。我在 MySQL 数据库中存储了一些具有纬度和经度的实体(标记位置)。我想根据用户的当前位置显示最近的标记位置。

是否有任何指南或源代码帮助,我可以创建 Web API 以根据当前位置在一定距离范围内获取最近的纬度/经度。所有纬度/经度都保存在 MySQL 数据库中,我使用 C# 作为 API。

如果有人可以提供,谢谢您的帮助。

标签: c#mysqlgoogle-mapsgeolocation

解决方案


您可以从下面的代码中获取(地雷、公里、海里)中两点之间的距离。

 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。


推荐阅读