`
zhoumeng87
  • 浏览: 70339 次
文章分类
社区版块
存档分类
最新评论

java Mysql 根据经纬度实时计算地址位置距离

 
阅读更多

数据库地址表设计

  1. 通用的区域街道地址表 tz_sys_area
字段名称 类型 备注
area_id bigint 区域 ID
area_name varchar(32) 区域名称
parent_id bigint 所属父区域 ID
level int 层级
type char 区域类型 0 国家 1 省份直辖市 2 地市 3 区县
area_name varchar(32) 区域名称
parent_id bigint 所属父区域 ID
level int 层级

后台也可以做修改

四级区域地址数据来源我在网上找的 json 文件然后按照格式倒入到的数据库,需要的可以关注我的公众号猿小叔

  1. 门店地址表 tz_address

需求实现

  1. 这里计算距离就需要用到经纬度

需要使用高德地图 api 接口地理/逆地理编码获取地址经纬度并保存

 /**
     * 地理/逆地理编码 (java项目大全 fhadmin.cn)
     * https://lbs.amap.com/api/webservice/guide/api/georegeo
     *
     * @return
     */
    public String addressToLongitude(String address) {
        String longitude = "";
        String urlString = "?key={key}&address={address}&output=JSON";
        String response = restTemplate.getForObject(ApiAction.API_GEOREGO_TEST + urlString, String.class, apiKey, address);
        if (StrUtil.isEmpty(response)) {
            return null;
        }
        JSONObject jsonObject = JSON.parseObject(response);
        String code = jsonObject.getString("infocode");
        if (code.equals("10000")) {
            JSONArray jsonArray = jsonObject.getJSONArray("geocodes");
            JSONObject jsonObject1 = (JSONObject) jsonArray.get(0);
            longitude = jsonObject1.get("location").toString();
        } else {
            return null;
        }
        return longitude;
    }
 private Address setlngAndLat(Address address) {
        String addr = address.getProvince() + address.getCity() + address.getArea() + address.getAddr();
        String longitude = gaoDeService.addressToLongitude(addr);
        if (StrUtil.isBlank(longitude)) {
            throw new BusinessException("地址经纬度识别识别");
        }
        String lat = longitude.split(",")[1];
        String lng = longitude.split(",")[0];

        address.setLat(lat);
        address.setLng(lng);
        return address;
    }
  1. MySQL 根据经纬度计算地址距离当前位置
 SELECT
               (
                       6371 * acos(
                                   cos(radians(#{lat}))
                                   * cos(radians(lat))
                                   * cos(radians(lng) - radians(#{lng}))
                               + sin(radians(#{lat}))
                                       * sin(radians(lat))
                       )
                   ) AS distance
        FROM tz_user_addr where addr_id=#{storeAddrId}

 

 

0
0
分享到:
评论

相关推荐

    mysql函数-根据经纬度坐标计算距离

    在MySQL数据库中,计算两个地理位置之间的距离通常涉及到地理坐标系统,即经纬度。经纬度坐标是地球表面位置的标准表示方式,其中经度表示东西方向,纬度表示南北方向。本篇文章将详细介绍如何利用MySQL的内置函数和...

    根据经纬度位置将其按照行政区域分类代码

    在IT行业中,对地理位置进行处理是一项常见的任务,特别是在大数据分析、导航系统以及各种基于位置的服务中。本项目涉及的关键技术是根据经纬度坐标将位置数据归类到相应的行政区域代码中。下面,我们将深入探讨这一...

    利用java、js或mysql计算高德地图中两坐标之间的距离

    首先,我们需要了解的是,高德地图使用的是WGS84坐标系,这是一种全球通用的地理坐标系统,它以经纬度来表示地理位置。 ### Java 实现 在Java中,我们可以创建一个`LngLat`类来存储经纬度信息,如提供的代码片段所...

    Spring boot基于redis实现附近的人

    - 分片存储,将用户分布在多个Redis实例上,根据地理位置分片,减少单个节点的压力。 6. **缓存策略**:由于地理位置信息的实时性,可以设置缓存策略,比如定时刷新或在用户位置改变时立即更新。 7. **部署与测试...

    中国省市区城市列表mysql数据表,可直接导入数据库、可转JSON数据,带行政区划码和经纬度

    此外,“带经纬度”表示数据中还包括了每个地区的地理坐标,这在需要进行地理位置计算或展示地图应用时非常关键,例如通过GPS定位、距离计算等。 标签“城市sql数据”则进一步明确了这个资源的主要内容,它是关于...

    地址到经纬度批量转换代码

    百度地图提供了一个强大的Web服务接口,允许开发者通过HTTP请求获取地理位置信息,包括地址到经纬度(也称为反向地理编码)的转换。这个API通常需要开发者注册并获取一个API密钥,以便在请求中进行身份验证,确保...

    全国省市区经纬度数据,带拼音,sql+json

    标题中的“全国省市区经纬度数据,带拼音,sql+json”揭示了这个压缩包包含的是关于中国所有省份、城市和区县的地理位置信息。这些数据不仅提供了经纬度坐标,还包含了每个行政区域的拼音,这有助于在处理中文地名时...

    腾讯地图行政区域经纬度转Mysql国内地区数据库.zip

    在处理地图数据时,理解这些坐标系统以及它们与实际地理位置的关系至关重要。 2. **腾讯地图API**:腾讯地图提供了一套API接口,允许开发者获取地图数据,包括行政区划信息和经纬度坐标。这些API通常通过HTTP请求...

    利用Java+MySQL实现附近功能实例

    - **范围筛选**:在计算距离之前,可以根据用户的地理位置先筛选出一个范围内的数据,例如只查询某个城市的地铁站,或者设定一个地理范围(如半径50公里)。 ```sql SET @targetLat = 31.175702; SET @targetLng = ...

    全球200多个国家及主要城市,中英文名称,对应关系,经纬度

    1. **全球国家与城市的数据**:这类数据通常包括国家的正式名称、简称、首都、人口、面积等基本信息,以及城市的人口、行政级别、地理位置等。这些信息可以用于创建世界地图、国家和城市选择器,或者进行全球范围的...

    java实现附近的人功能.zip

    在Java编程环境中,实现“附近的人”功能通常涉及到地理位置服务、数据存储与检索以及网络通信等多个方面的技术。以下是对这个主题的详细解析: 1. **地理位置服务**:要实现“附近的人”功能,首先需要获取用户的...

    JAVA实现空间索引编码——GeoHash的示例

    - 首先,将纬度区间(-90, 90)和经度区间(-180, 180)不断均分为两个子区间,并根据地理位置落在哪个子区间内分配一个编码(0或1)。 - 继续这个过程,直到达到所需的精度。例如,对于一个8位的GeoHash字符串,这...

    java批量获取百度地图坐标

    百度地图提供了丰富的Web服务接口,其中包括地理位置转换接口,能够将地址转换为经纬度坐标(反之亦然)。在本案例中,我们关注的是“地址解析”(Geocoding)服务,用于获取地址对应的坐标。 1. **百度地图API**:...

    天气预报数据获取java代码(风和天气、高德地图)

    高德地图的天气API可能需要用户的位置信息,因此可能需要使用其地图API来获取经纬度,然后根据这些坐标查询天气。这个过程可能涉及到地图的逆地理编码服务,也需要处理API调用的授权和限制。 5. **数据存储与分析*...

    中国地区的mysql数据

    2. **中国**:在这个上下文中,"中国"指的是地理区域,数据库中的数据是关于中国的行政区域划分,这可能对需要在中国市场运营的公司或者需要处理中国地理位置信息的项目非常有用。 3. **地图**:地图是地理信息的...

    java实现附近的人功能

    在地理信息系统中,常用的计算方法是Haversine公式,它可以基于地球的半径计算出两点之间的大圆距离。Java中可以编写函数来实现这个计算。 4. **范围查询**:服务器接收到请求后,根据当前用户的位置,执行范围查询...

    【Java毕业设计】代毕业设计,java调用百度地图API实现西安旅游景点搜索、路线规划导航.zip

    5. **GIS(地理信息系统)基础**:虽然百度地图API处理了大部分GIS细节,但开发者仍需了解基本的地理坐标系统(如WGS84和GCJ-02)、经纬度坐标以及距离计算等相关知识。 6. **前端界面设计**:尽管描述中未明确提及...

    regionData.7z

    无论是外卖平台、打车软件还是社交网络,它们都需要精确的地理位置信息来为用户提供服务。经纬度信息的提供,使得开发者可以轻松地将地理坐标与行政区划数据结合,进行更复杂的空间分析和定位功能开发。 紧随其后的...

    中国省市区数据源_java解析

    这些数据包括但不限于行政区域代码、名称、经纬度等,为各种应用提供标准的地理位置信息。这些数据源广泛应用于地图导航、物流配送、人口统计分析、市场划分等多个领域。 其次,为什么需要Java解析?Java作为一种...

    android lbs查询mysql

    这里的"android lbs查询mysql"指的是在Android应用中利用GPS或网络定位获取到经纬度坐标,并通过这些坐标来查询MySQL数据库中的地理位置相关数据。 首先,我们需要了解Android系统如何获取设备的当前位置。Android...

Global site tag (gtag.js) - Google Analytics