调用百度Api根据省市区名称获取对应经纬度

好久没写博客了,最近刚好要做这样一个统计分析图,需要用到根据省市区的经纬度,下面代码是调的百度接口,缺点就是好像不能批量获取经纬度,本篇原地址

package com.demo.product.cooperation;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

public class GetCoordinate {

        public static void main(String[] args) {
            try {
                String[] coordinate = new GetCoordinate().getCoordinate("浙江省嘉兴市");
                System.out.println(coordinate[0]+"  "+coordinate[1]);//0:经度 1:纬度
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


        /**
         * 根据城市名称查询所在经纬度
         * @param addr 要查询的地址
         * 查询的地址
         * @return
         * @throws IOException
         */
        public String[] getCoordinate(String addr) throws IOException {
            String lng = null;//经度
            String lat = null;//纬度
            String address = null;
            try {
                address = URLEncoder.encode(addr, "UTF-8");
            }catch (UnsupportedEncodingException e1) {
                e1.printStackTrace();
            }
            String key = "*****************";
            String url = String .format("http://api.map.baidu.com/geocoder?address=%s&output=json&key=%s", address, key);
            URL myURL = null;
            URLConnection httpsConn = null;
            try {
                myURL = new URL(url);
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            InputStreamReader insr = null;
            BufferedReader br = null;
            try {
                httpsConn = (URLConnection) myURL.openConnection();// 不使用代理
                if (httpsConn != null) {
                    insr = new InputStreamReader( httpsConn.getInputStream(), "UTF-8");
                    br = new BufferedReader(insr);
                    String data = null;
                    int count = 1;
                    while((data= br.readLine())!=null){
                        if(count==5){
                            lng = (String)data.subSequence(data.indexOf(":")+1, data.indexOf(","));//经度
                            count++;
                        }else if(count==6){
                            lat = data.substring(data.indexOf(":")+1);//纬度
                            count++;
                        }else{
                            count++;
                        }
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if(insr!=null){
                    insr.close();
                }
                if(br!=null){
                    br.close();
                }
            }
            return new String[]{lng,lat};
        }
}

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
根据百度API获取经纬度对应省市区信息,可以使用Python进行实现。以下是一个示例代码: ```python import requests def get_location_info(latitude, longitude): ak = '你的百度开发者API密钥' # 需要替换为自己的百度开发者API密钥 url = f'http://api.map.baidu.com/reverse_geocoding/v3/?ak={ak}&output=json&coordtype=wgs84ll&location={latitude},{longitude}' response = requests.get(url) data = response.json() if data['status'] == 0: province = data['result']['addressComponent']['province'] city = data['result']['addressComponent']['city'] district = data['result']['addressComponent']['district'] return province, city, district else: return None # 使用示例 latitude = 39.9087 # 纬度 longitude = 116.3975 # 经度 location_info = get_location_info(latitude, longitude) if location_info: province, city, district = location_info print(f'该经纬度所在位置为:省份:{province},城市:{city},区县:{district}') else: print('获取位置信息失败') ``` 以上代码中,我们使用了Python的requests库发送HTTP请求,并通过百度API的逆地理编码接口获取经纬度对应的位置信息。需要注意,你需要将`ak`变量的值替换为自己的百度开发者API密钥。 具体步骤为: 1. 引入requests库,用于发送HTTP请求。 2. 定义一个`get_location_info`函数,该函数接受经度和纬度作为参数,并返回省市区的信息。 3. 在函数中构建请求URL,包括百度API密钥、经纬度等信息,并发送GET请求获取响应数据。 4. 解析API返回的JSON数据,提取省市区信息。 5. 在主程序中,调用`get_location_info`函数,传入经纬度参数,获取位置信息。 6. 如果成功获取位置信息,则将其打印出来;否则输出获取位置信息失败的提示。 注意,以上代码仅为示例,具体的实现需要根据你所使用的具体百度API接口和参数进行适当的调整。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值