百度地图里如何做一个地点2公里的范围圈。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度地图里如何做一个地点2公里的范围圈。相关的知识,希望对你有一定的参考价值。

1、百度搜索百度地图打开。

2、打开右上角工具箱,使用标记工具标记中心店。

3、标记中心点,点击退出的文本的保存按钮。

4、在我的标记栏中点击“在附近找 ”按钮。

5、输入需要的范围圈的大小“2公里”。

6、出现范围圈,将一公里向右拉至两公里即可。

扩展资料

百度地图是为用户提供包括智能路线规划、智能导航(驾车、步行、骑行)、实时路况等出行相关服务的平台。 

作为地图行业市场的领先者,百度地图秉持“科技让出行更简单”的品牌愿景,以"服务用户出行"为使命,以"科技"为手段不断探索创新。百度地图国际化地图已覆盖全球209个国家和地区。伴随着AI时代的到来,百度地图实现了语音交互覆盖用户操控全流程,还上线了AR步导  、AR导游等实用功能,更加方便用户的出行。

参考资料来源:百度百科:百度地图

参考技术A

    搜素百度地图并打开;

2. 输入一个希望搜索的地方;

3. 定位一个点 ,例如秦皇岛商城;

4. 鼠标右键,选择在此点附近找;

5. 随便输入一个地方,比如这里输入的是酒店;

6. 然后会出现一个可以调节半径的圈,点击蓝色箭头就可以调节到你需要的范围;

扩展资料:

百度地图是为用户提供包括智能路线规划、智能导航(驾车、步行、骑行)、实时路况等出行相关服务的平台。

“世界很复杂,百度更懂你”,作为地图行业市场的领先者 ,百度地图秉持“科技让出行更简单”的品牌愿景,以"服务用户出行"为使命,以"科技"为手段不断探索创新。目前,百度地图国际化地图已覆盖全球209个国家和地区。伴随着AI时代的到来,百度地图实现了语音交互覆盖用户操控全流程 [3]  ,还上线了AR步导 [4]  、AR导游等实用功能,更加方便用户的出行。

2018年8月8日,百度地图获金运奖年度最佳效果运营奖。 

参考资料:百度百科-百度地图

参考技术B

在百度地图上先定位一个点,然后在这个点附近搜索,如公交车、医院、银行,地图会在默认1公里为半径的范围内画出搜索圆,还可以拖动半径点将圆任意扩大或缩小。

你可以将半径修改为2公里,就得到一个2公里的圈。如下图所示:

扩展资料:

百度地图是为用户提供包括智能路线规划、智能导航(驾车、步行、骑行)、实时路况等出行相关服务的平台。

“世界很复杂,百度更懂你”,作为地图行业市场的领先者 ,百度地图秉持“科技让出行更简单”的品牌愿景,以"服务用户出行"为使命,以"科技"为手段不断探索创新。 

参考资料:百度百科-百度地图

参考技术C 如果是百度地图应用范围内的问题,可以讨论一下。
  在地图上确定任意一点,右键,选择“在此点附近找……”,选择公交车站、医院、饭店等任意一项,会出现一个半径1公里的圆。修改半径为2公里,就得到一个2公里的圈了。
  如果不希望圆圈里出现搜索到的东西(宾馆、饭店等),可以在选择框里输入一个地图上不存在的东西的名称,比如”小鸭子“,出现的圆圈里就不会有任何东西了。
  如果本问题讨论的是编程范围内的问题,对编程是外行,请楼主直接无视此回答。本回答被提问者采纳
参考技术D 要在地图上画一个一定距离的范围圈,可以先定位一个点,然后在这个点附近搜索(如公交车、医院、银行),地图会在默认1公里为半径的范围内画出搜索圆,还可以拖动半径点将圆任意扩大或缩小

使用GPS经纬度定位附近地点(某一点范围内查询)

需要手机查找附近N米以内的商户,致想法是已知一个中心点,一个半径,求圆包含于圆抛物线里所有的点,经纬度是一个点,半径是一个距离,不能直接加减,下面提供C#的解决方法

数据库中记录了商家在百度标注的经纬度(如:116.412007, 39.947545)

最初想法,以圆心点为中心点,对半径做循环,半径每增加一个像素(暂定1米)再对周长做循环,到数据库中查询对应点的商家(真是一个长时间的循环工作),上网百度类似的文章有了点眉目

大致想法是已知一个中心点,一个半径,求圆包含于圆抛物线里所有的点,这样的话就需要知道所要求的这个圆的对角线的顶点,问题来了 经纬度是一个点,半径是一个距离,不能直接加减

技术分享
/// <summary>
    /// 经纬度坐标
    /// </summary>      
   public class Degree
    {
        public Degree(double x, double y)
        {
            X = x;
            Y = y;
        }
        private double x; 
         public double X
        {
            get { return x; }
            set { x = value; }
        }
        private double y; 
         public double Y
        {
            get { return y; }
            set { y = value; }
        }
    } 
 
    public class CoordDispose
    {
        private const double EARTH_RADIUS = 6378137.0;//地球半径(米) 
         /// <summary>
        /// 角度数转换为弧度公式
        /// </summary>
        /// <param name="d"></param>
        /// <returns></returns>
        private static double radians(double d)
        {
            return d * Math.PI / 180.0;
        } 
         /// <summary>
        /// 弧度转换为角度数公式
        /// </summary>
        /// <param name="d"></param>
        /// <returns></returns>
        private static double degrees(double d)
        {
            return d * (180 / Math.PI);
        } 
         /// <summary>
        /// 计算两个经纬度之间的直接距离
        /// </summary> 
         public static double GetDistance(Degree Degree1, Degree Degree2)
        {
            double radLat1 = radians(Degree1.X);
            double radLat2 = radians(Degree2.X);
            double a = radLat1 - radLat2;
            double b = radians(Degree1.Y) - radians(Degree2.Y); 
             double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) +
             Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));
            s = s * EARTH_RADIUS;
            s = Math.Round(s * 10000) / 10000;
            return s;
        } 
         /// <summary>
        /// 计算两个经纬度之间的直接距离(google 算法)
        /// </summary>
        public static double GetDistanceGoogle(Degree Degree1, Degree Degree2)
        {
            double radLat1 = radians(Degree1.X);
            double radLng1 = radians(Degree1.Y);
            double radLat2 = radians(Degree2.X);
            double radLng2 = radians(Degree2.Y); 
             double s = Math.Acos(Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Cos(radLng1 - radLng2) + Math.Sin(radLat1) * Math.Sin(radLat2));
            s = s * EARTH_RADIUS;
            s = Math.Round(s * 10000) / 10000;
            return s;
        } 
         /// <summary>
        /// 以一个经纬度为中心计算出四个顶点
        /// </summary>
        /// <param name="distance">半径(米)</param>
        /// <returns></returns>
        public static Degree[] GetDegreeCoordinates(Degree Degree1, double distance)
        {
            double dlng = 2 * Math.Asin(Math.Sin(distance / (2 * EARTH_RADIUS)) / Math.Cos(Degree1.X));
            dlng = degrees(dlng);//一定转换成角度数  原PHP文章这个地方说的不清楚根本不正确 后来lz又查了很多资料终于搞定了 
             double dlat = distance / EARTH_RADIUS;
            dlat = degrees(dlat);//一定转换成角度数 
             return new Degree[] { new Degree(Math.Round(Degree1.X + dlat,6), Math.Round(Degree1.Y - dlng,6)),//left-top
                                  new Degree(Math.Round(Degree1.X - dlat,6), Math.Round(Degree1.Y - dlng,6)),//left-bottom
                                  new Degree(Math.Round(Degree1.X + dlat,6), Math.Round(Degree1.Y + dlng,6)),//right-top
                                  new Degree(Math.Round(Degree1.X - dlat,6), Math.Round(Degree1.Y + dlng,6)) //right-bottom
            }; 
         }
    }
技术分享

测试方法:

技术分享
static void Main(string[] args)
        {
            double a = CoordDispose.GetDistance(new Degree(116.412007, 39.947545), new Degree(116.412924, 39.947918));//116.416984,39.944959
            double b = CoordDispose.GetDistanceGoogle(new Degree(116.412007, 39.947545), new Degree(116.412924, 39.947918));
            Degree[] dd = CoordDispose.GetDegreeCoordinates(new Degree(116.412007, 39.947545), 102);
            Console.WriteLine(a+" "+b);
            Console.WriteLine(dd[0].X + "," + dd[0].Y );
            Console.WriteLine(dd[3].X + "," + dd[3].Y);
            Console.ReadLine();
        }
技术分享

试了很多次 误差在1米左右

拿到圆的顶点就好办了

数据库要是sql 2008的可以直接进行空间索引经纬度字段,这样应该性能更好(没有试过)

lz公司数据库还老 2005的 这也没关系,关键是经纬度拆分计算,这个就不用说了 网上多的是 最后上个实现的sql语句

SELECT id,zuobiao FROM dbo.zuobiao WHERE zuobiao<>‘‘ AND 
dbo.Get_StrArrayStrOfIndex(zuobiao,‘,‘,1)>116.41021 AND
dbo.Get_StrArrayStrOfIndex(zuobiao,‘,‘,1)<116.413804 AND
dbo.Get_StrArrayStrOfIndex(zuobiao,‘,‘,2)<39.949369 AND
dbo.Get_StrArrayStrOfIndex(zuobiao,‘,‘,2)>39.945721

以上是关于百度地图里如何做一个地点2公里的范围圈。的主要内容,如果未能解决你的问题,请参考以下文章

百度地图圈出直径2公里

# 如何圈出某点周边半径2公里的圆(用百度地图)?

百度地图如何测量两个地点的距离

百度地图缩放问题

如何在百度地图上标注多个地点

如何计算百度地图上两点的距离