Java 通过地址获取经纬度 - 高德地图

一、添加依赖

            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
                <version>6.0</version>
            </dependency>

二、请求工具类

import com.github.kevinsawicki.http.HttpRequest;

/**
 * 请求工具类
 */
public class RequestUtils {

    private static final String DEFAULT_CHARSET = "utf-8";
    private static final int CONNECT_TIMEOUT_IN_MIS_SECOND = 10000;
    private static final int READ_TIMEOUT_IN_MIS_SECOND = 30000;

    public static RequestResult getJsonText(String url, String charset) {
        if (charset == null) charset = DEFAULT_CHARSET;
        HttpRequest request = HttpRequest.get(url).connectTimeout(CONNECT_TIMEOUT_IN_MIS_SECOND).readTimeout(READ_TIMEOUT_IN_MIS_SECOND);
        String body = request.body(charset);
        int code = request.code();
        request.disconnect();
        return new RequestResult(code, body);
    }

}

三、返回接收类

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

/**
 *  高德地图返回工具类
 */
@Getter
@Setter
@AllArgsConstructor
public class RequestResult {

    /** 状态码 */
    private int code;

    /** 返回body */
    private  String body;

}

四、高德地图工具类

import java.net.URLEncoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 获取高德地图经纬度
 *
 * @author lixin.saho
 */
public class MapUtils {
    private static String API = "http://restapi.amap.com/v3/geocode/geo?key=<key>&s=rsv3&address=<address>";

    private static String KEY = "key";

    private static Pattern pattern = Pattern.compile("\"location\":\"(\\d+\\.\\d+),(\\d+\\.\\d+)\"");

    static {
        init();
    }

    private static void init() {
//        System.out.println("高德地图工具类初始化");
//        System.out.println("api: {}"+API);
//        System.out.println("key: {}"+KEY);
        API = API.replaceAll("<key>", KEY);
    }

    private static double[] getLatAndLonByAddress(String address) {
        try {
            String requestUrl = API.replaceAll("<address>", URLEncoder.encode(address, "UTF-8"));
            RequestResult requestResult = RequestUtils.getJsonText(requestUrl, null);
            if (200 != requestResult.getCode()) {
                return null;
            }
            requestUrl = requestResult.getBody();
            if (requestUrl != null) {
                Matcher matcher = pattern.matcher(requestUrl);
                if (matcher.find() && matcher.groupCount() == 2) {
                    double[] gps = new double[2];
                    gps[0] = Double.valueOf(matcher.group(1));
                    gps[1] = Double.valueOf(matcher.group(2));
                    return gps;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        double[] aaa = MapUtils.getLatAndLonByAddress("广东省深圳市福田区天安数码城创业科技大厦一期");
        for (double cccc : aaa) {
            System.out.println(cccc);
        }
        System.out.println(MapUtils.getLatAndLonByAddress("广东省深圳市福田区天安数码城创业科技大厦一期"));

    }

五、高德地图的秘钥,及高德地图工具类里的key需要自己申请

原文地址:https://www.cnblogs.com/shaolixin/p/10203246.html

时间: 2024-10-27 11:39:35

Java 通过地址获取经纬度 - 高德地图的相关文章

根据省份等地址获取经纬度,或根据经纬度获取地址信息

在web开发涉及地图操作的时候或者移动客户端开发中有时候有以下需求: 下面主要记录通过百度提供的API的一个解决方案: 在百度开发平台中提供了这样一个叫Geocoding 的API,这个API用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,使用的是http协议,返回JSON或者XML数据. 地理编码:即地址解析,由详细到街道的结构化地址得到百度经纬度信息,例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.31985,lat:39.959836”.同时,地理编码

Python 根据地址获取经纬度

方法一: 使用Geopy包 : https://github.com/geopy/geopy   (仅能精确到城镇,具体街道无结果返回) from geopy.geocoders import Nominatim #使用geopy查询 def geocodeN(address): gps=Nominatim() location=gps.geocode(address) return location.longitude,location.latitude 方法二: 使用高德地图或百度地图API

利用百度API(js),怎样通过地址获取经纬度

根据经纬度找到具体地址:http://api.map.baidu.com/geocoder?location=纬度,经度&output=输出格式类型&key=用户密钥如:http://api.map.baidu.com/geocoder?location=31.407452,121.490523&output=json&key=6eea93095ae93db2c77be9ac910ff311 根据具体地址找到经纬度:http://api.map.baidu.com/geoc

JS 通过选择百度地图地址获取经纬度自动填充到文本框中的方法

首先要注册百度地图API. 1.登录百度地图开放平台http://lbsyun.baidu.com 注册账号,完善信息,点击网站右上角的"API控制台",点击,创建应用. 应用类型选择:"浏览器端",应用服务全选,Referer白名单:* 点击提交.会生成一个访问应用(AK). AK码记下来,后面页面中要用它来引出百度地图. 2.创建html网页.部分代码如下: <!DOCTYPE html> <html> <head> <

PHP通过地址获取经纬度【百度地图API】

/** * @param string $address 地址 * @param string $city 城市名 * @return array */ function getLatLng($address='',$city='') { $result = array(); $ak = '';//您的百度地图ak,可以去百度开发者中心去免费申请 $url ="http://api.map.baidu.com/geocoder/v2/?callback=renderOption&outp

Java获取IP地址,IpUtils工具类,Java IP地址获取

================================ ©Copyright 蕃薯耀 2020-01-17 https://www.cnblogs.com/fanshuyao/ import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.util.Enumeration; import javax.servlet.http.HttpSer

根据地址获取经纬度

进入网站:http://map.yanue.net/例如:地址:规划四号路北侧,规划1路西xx米规划四号路北侧,规划1路西xx米需要完善为(加前缀):天津泰达规划四号路北侧,规划1路西xx米天津泰达规划四号路北侧,规划六1路西xx米再作为输入参数,计算后会批量返回经纬度.注意:每行就是一个地址,会返回一个经纬度. 如图:

jQuery通过地址获取经纬度demo

在开始之前,首先需要登录百度地图API控制台申请密钥ak. 1.登录百度地图开放平台http://lbsyun.baidu.com 注册账号,完善信息,点击网站右上角的"API控制台",点击,创建应用. 应用类型选择:"服务器端",IP白名单:0.0.0.0/0 点击提交.会生成一个访问应用(AK). 2.编写界面. <!DOCTYPE html> <html> <head> <meta charset="utf-

Android Google Maps API 网络服务用于网络定位、计算路线、获取经纬度、获取详细地址等

---恢复内容开始--- extends:http://blog.csdn.net/h7870181/article/details/12505883 Google Maps API 网络服务 官网地址 : https://developers.google.com/maps/documentation/webservices/?hl=zh-cn 其实就是一些接口,供我们调用,如: 1.根据地址获取经纬度 http://maps.google.com/maps/api/geocode/json?