집 >데이터 베이스 >MySQL 튜토리얼 >Mysql을 사용하여 주소 경도, 위도, 거리 및 실시간 위치를 계산합니다.
최근에 프로젝트를 진행하다가 이런 필요성을 느꼈습니다.
쿠폰을 사용하려면 카드 패키지를 클릭하고, 쿠폰을 사용하는 주변 매장을 표시해야 합니다.
범용 지역 주소 테이블 tz_sys_area
필드 이름 | type | Remarks |
---|---|---|
area_id | bigint | 지역 ID |
area_name | varchar (32) | 지역 이름 |
parent_id | bigint | 상위 지역 ID |
level | int | level |
type | char | 지역 유형 0 국가 1 도 자치단체 2 도, 시, 군 및 군 |
area_name | varchar(32) | area name |
parent_id | bigint | 상위 지역 ID |
level | int | 레벨 |
배경도 수정 가능
4차 지역 주소 데이터의 출처는 제가 온라인에서 찾은 json 파일이고, 포맷에 맞춰 데이터베이스에 쏟아 부었습니다
스토어 주소 테이블 tz_address
를 구현하려면 경도와 위도를 사용해야 합니다.
주소 위도를 얻으려면 Amap API 인터페이스 지리/역 지오코딩을 사용해야 합니다. 경도를 입력하고 저장하세요
/** * 地理/逆地理编码 * 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; }
MySQL을 사용하여 경도와 위도를 기준으로 주소 거리를 계산하세요 Location
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}
위 내용은 Mysql을 사용하여 주소 경도, 위도, 거리 및 실시간 위치를 계산합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!