百度地图通过经纬度获取地址信息

高德地图api——通过经纬度计算路线 最近在使用高德地图绘制高速路线,将通过经纬度和高速路线桩号计算路线数据后,将数据绘制在地图上进行展示,在此将封装的方法做下记录。 阅读详情

以前用的都是通过谷歌的坐标调用谷歌api 最近 发现老是连不上谷歌服务器。

于是找了找百度的,

地址为 http://developer.baidu.com/map/webservice-geocoding.htm#.E4.BB.80.E4.B9.88.E6.98.AFGeocoding.EF.BC.9F

  • 逆地理编码示例

    参数值
    Latitude:
    Longitude:
    pois(是否显示周边100米内poi): 
 

  •  (结果显示如下)

    http://api.map.baidu.com/geocoder/v2/?ak=您的密钥&callback=renderReverse&location=28.696117,115.958458&output=json&pois=1

    坐标:(115.95845796638,28.696117043877)对应的地址是: 江西省南昌市青山湖区创新路1号

    该点周边100米内有10个poi

    状态字段:

    名称类型说明
    statusconstant返回结果状态值, 成功返回0,其他值请查看 附录 。
    locationlat纬度坐标
    lng经度坐标
    formatted_address结构化地址信息
    business所在商圈信息,如 "人民大学,中关村,苏州街"
    addressComponentcity城市名
    district区县名
    province省名
    street街道名
    street_number街道门牌号
    pois(周边poi数组)addr地址信息
    cp数据来源
    distance离坐标点距离
    namepoi名称
    poiTypepoi类型,如’ 办公大厦,商务大厦’
    pointpoi坐标{x,y}
    tel电话
    uidpoi唯一标识
    zip邮编

    json示例:

    http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderReverse&location=39.983424,116.322987&output=json&pois=1

    xml示例:

    http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderReverse&location=39.983424,116.322987&output=xml&pois=1

    特别说明:

    1.因为Geocoding和反Geocoding使用的门址数据以及算法都不是一样的,所以会出现不能一一对应的现象。

    2.逆地址解析location参数传入的参数格式是(纬度lat,经度lng)。

    8.返回码状态表

    返回码定义
    0正常
    1服务器内部错误
    2请求参数非法
    3权限校验失败
    4配额校验失败
    5ak不存在或者非法
    101服务禁用
    102不通过白名单或者安全码不对
    2xx无权限
    3xx配额错误

解析json

{"status":0,"result":{"location":{"lng":115.95845796638,"lat":28.696117043877},"formatted_address":"江西省南昌市青山湖区创新路1号","business":"高新开发区,火炬广场,发展路","addressComponent":{"city":"南昌市","district":"青山湖区","province":"江西省","street":"创新路","street_number":"1号"},"cityCode":163}}

附上代码

package com.xuyw.wx.util;

import net.sf.json.JSONObject;

import com.xuyw.wx.config.Config;

/**
 * 百度工具类
 * 
 * @author xuyw
 * @email xyw10000@163.com
 * @date 2014-06-22
 */
public class BaiDuUtil {
  public static String getCity(String lat, String lng) {
    JSONObject obj = getLocationInfo(lat, lng).getJSONObject("result")
        .getJSONObject("addressComponent");
    return obj.getString("city");
  }

  public static JSONObject getLocationInfo(String lat, String lng) {
    String url = "http://api.map.baidu.com/geocoder/v2/?location=" + lat + ","
        + lng + "&output=json&ak=" + Config.BAIDU_GEOCONV_KEY+"&pois=0";
    JSONObject obj = JSONObject.fromObject(HttpUtil.getRequest(url));
    return obj;
  }

  public static void main(String[] args) {
    System.out.println(BaiDuUtil.getCity("28.694439", "115.939728"));
  }
}
package com.xuyw.wx.util;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * Http 简单封装
 * 
 * @author xuyw
 * @email xyw10000@163.com
 * @date 2012-06-14
 */
public class HttpUtil {
  // 连接超时时间
  private static final int CONNECTION_TIMEOUT = 3000;
  //读取超时时间
  private static final int READ_TIMEOUT = 5000;
  // 参数编码
  private static final String ENCODE_CHARSET = "utf-8";

  /**
   * 发送HTTP_POST请求
   * 
   * @see 本方法默认的连接和读取超时均为30秒
   * @param reqURL
   *            请求地址
   * @param params
   *            发送到远程主机的正文数据[a:1,b:2]
   * @return String
   */
  public static String postRequest(String reqURL, String... params) {
    StringBuilder resultData = new StringBuilder();
    URL url = null;
    try {

      url = new URL(reqURL);
    } catch (MalformedURLException e) {
      e.printStackTrace();
    }
    HttpURLConnection urlConn = null;
    InputStreamReader in = null;
    BufferedReader buffer = null;
    String inputLine = null;
    DataOutputStream out = null;
    if (url != null) {
      try {
        urlConn = (HttpURLConnection) url.openConnection();
        urlConn.setDoInput(true);// 设置输入流采用字节流
        urlConn.setDoOutput(true);// 设置输出流采用字节流
        urlConn.setRequestMethod("POST");
        urlConn.setUseCaches(false); // POST请求不能使用缓存
        urlConn.setInstanceFollowRedirects(true);
        urlConn.setConnectTimeout(CONNECTION_TIMEOUT);// 设置连接超时
        urlConn.setReadTimeout(READ_TIMEOUT); // 设置读取超时
        // 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的
        urlConn.setRequestProperty("Content-Type",
            "application/x-www-form-urlencoded");
        urlConn.setRequestProperty("Charset", ENCODE_CHARSET);//
        String param = sendPostParams(params);
        urlConn.setRequestProperty("Content-Length",
            param.getBytes().length + "");//
        // urlConn.setRequestProperty("Connection", "Keep-Alive");
        // //设置长连接
        urlConn.connect();// 连接服务器发送消息
        if (!"".equals(param)) {
          out = new DataOutputStream(urlConn.getOutputStream());
          // 将要上传的内容写入流中
          out.writeBytes(param);
          // 刷新、关闭
          out.flush();
          out.close();

        }
        in = new InputStreamReader(urlConn.getInputStream(),
            HttpUtil.ENCODE_CHARSET);
        buffer = new BufferedReader(in);
        if (urlConn.getResponseCode() == 200) {
          while ((inputLine = buffer.readLine()) != null) {
            resultData.append(inputLine);
          }
        }
      } catch (IOException e) {
        e.printStackTrace();
      } finally {
        try {
          if (buffer != null) {
            buffer.close();
          }

          if (in != null) {
            in.close();
          }

          if (urlConn != null) {
            urlConn.disconnect();
          }
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
    return resultData.toString();
  }

  /**
   * 发送HTTP_GET请求
   * 
   * @see 本方法默认的连接和读取超时均为30秒
   * @param httpUrl
   *            请求地址
   * @param map
   *            发送到远程主机的正文数据[a:1,b:2]
   * @return String
   */
  public static String getRequest(String httpUrl, String... params) {
    StringBuilder resultData = new StringBuilder();
    URL url = null;
    try {

      String paramurl = sendGetParams(httpUrl, params);
      url = new URL(paramurl);

    } catch (MalformedURLException e) {
      e.printStackTrace();
    }
    HttpURLConnection urlConn = null;
    InputStreamReader in = null;
    BufferedReader buffer = null;
    String inputLine = null;
    if (url != null) {
      try {
        urlConn = (HttpURLConnection) url.openConnection();
        urlConn.setRequestMethod("GET");
        urlConn.setConnectTimeout(CONNECTION_TIMEOUT);
        in = new InputStreamReader(urlConn.getInputStream(),
            HttpUtil.ENCODE_CHARSET);
        buffer = new BufferedReader(in);
        if (urlConn.getResponseCode() == 200) {
          while ((inputLine = buffer.readLine()) != null) {
            resultData.append(inputLine);
          }
        }
      } catch (IOException e) {
        e.printStackTrace();
      } finally {
        try {
          if (buffer != null) {
            buffer.close();
          }

          if (in != null) {
            in.close();
          }

          if (urlConn != null) {
            urlConn.disconnect();
          }
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }

    return resultData.toString();
  }

  /**
   * Post追加参数
   * 
   * @see <code>params</code>
   * @param reqURL
   *            请求地址
   * @param params
   *            发送到远程主机的正文数据[a:1,b:2]
   * @return
   */
  private static String sendPostParams(String... params) {
    StringBuilder sbd = new StringBuilder("");
    if (params != null && params.length > 0) {
      for (int i = 0; i < params.length; i++) {
        String[] temp = params[i].split(":");
        sbd.append(temp[0]);
        sbd.append("=");
        sbd.append(urlEncode(temp[1]));
        sbd.append("&");

      }
      sbd.setLength(sbd.length() - 1);// 删掉最后一个
    }
    return sbd.toString();
  }

  /**
   * Get追加参数
   * 
   * @see <code>params</code>
   * @param reqURL
   *            请求地址
   * @param params
   *            发送到远程主机的正文数据[a:1,b:2]
   * @return
   */
  private static String sendGetParams(String reqURL, String... params) {
    StringBuilder sbd = new StringBuilder(reqURL);
    if (params != null && params.length > 0) {
      if (isexist(reqURL, "?")) {// 存在?
        sbd.append("&");
      } else {
        sbd.append("?");
      }
      for (int i = 0; i < params.length; i++) {
        String[] temp = params[i].split(":");
        sbd.append(temp[0]);
        sbd.append("=");
        sbd.append(urlEncode(temp[1]));
        sbd.append("&");

      }
      sbd.setLength(sbd.length() - 1);// 删掉最后一个
    }
    return sbd.toString();
  }

  // 查找某个字符串是否存在
  private static boolean isexist(String str, String fstr) {
    return str.indexOf(fstr) == -1 ? false : true;
  }

  /**
   * 编码
   * 
   * @param source
   * @return
   */
  private static String urlEncode(String source) {
    String result = source;
    try {
      result = java.net.URLEncoder
          .encode(source, HttpUtil.ENCODE_CHARSET);
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
    return result;
  }
}

【最简单】地图获取经纬度的办法 打开 https://lbs.amap.com/tools/picker手机端 (拖动地图,点击获取坐标)PC端打开 高德地图的 坐标拾取器https://lbs.amap.com/tools/picker即可享用封面 阅读详情

相关推荐

高德地图坐标拾取器:3步搞定经纬度获取(附手机/PC端操作指南)

本文详细介绍了高德地图坐标拾取器的使用方法,帮助用户快速获取精准的经纬度坐标。文章涵盖PC端与手机端的3步操作指南,并深入解析了GCJ-02坐标系原理、高级应用技巧及开发集成场景,是开发者、数据分析师高效处理地理信息的实用工具。

kiwi8的博客 2023

最方便简单的经纬度查询方法

本文为大家介绍方便快速的经纬度查询方法,所获得的经纬度包括GPS坐标经纬、火星坐标经纬(谷歌地图经纬、高德地图经纬、腾迅地图经纬)和百度地图坐标经纬。 1、任意地图位置的经纬度坐标信息 2、地名查询经纬度坐标信息 3、实现经纬度查询地名位置 4、查询过的经纬点保留在地图上。

ning387的博客 4万+

通过经纬度获取地址信息之百度地图API

百度API的使用分享,及网站访问,网站返回数据获取。

学习是一种信仰。 2490

如何准确获取地点位置的经纬度?(高德)

使用高德地图api的坐标拾取器 地址:https://lbs.amap.com/tools/picker。在高德地图搜索选择地址 高德网址:https://www.amap.com/搜索想要的位置地址例如我搜索的是成都市金牛区。按下回车键就可以看见经纬度了。复制去新的浏览器网页。

qq_47902937的博客 2万+

FreeRTOS-Plus-CLI使用笔记

FreeRTOS-Plus-CLI使用笔记 一、简介 详细介绍可参考FreeRTOS-Plus-CLI官网地址入口 FreeRTOS+CLI(Command Line Interface, 命令行接口)提供了一种简单、小型、可扩展且RAM高效的方法,使FreeRTOS应用程序能够处理命令行输入。添加一条指令的步骤如下: 提供一个实现命令功能的函数 将命令映射到该功能函数 注册命令 运行命令解释器 命令行调试接口对于排查分析出现的问题提供了很好的接口,可以通过查看传感器信息判断传感器是否正常,可以查看内置

ApexYuan 6962

告别SendKeys!用DD驱动级模拟在Windows 10/11上实现真·后台键鼠操作(Python实战)

本文详细介绍了如何使用DD驱动级模拟技术在Windows 10/11上实现真后台键鼠操作,解决传统方法如pyautogui和SendKeys的局限性。通过Python实战案例,展示了驱动级模拟在游戏自动化、RPA等场景中的高效应用,包括环境配置、核心API解析及高级优化技巧。

weixin_42519985的博客 798

在百度地图中获取当前点击 位置的 经纬度 和 地址信息

效果图: 当点击地图中的某一个位置,会在上面的文本框中显示当前的位置信息和经纬度信息。 jsp中的代码就一个div <div id="allmap" style="height:500px; margin: 0 10px 10px;"></div> <%--导入百度地图 js--%> <script type="text/java...

wlj_wangjun的博客 5883

PD3.0详解 协议的时序timer和counter计数

前面介绍了关于PD协议的交互,还有协议层数据各个字段的含义,但是一直没有系统的说关于协议的时序,还有部分counter,就是协议允许发送的次数,或者一些其他计数。 大师匈今天说一下关于这方面的东西,这些东西都是非常关键的东西,但是相对来说PD标准内对时序的要求还是比较宽泛,非常容易能够实现这样的要求。 Timer 1、CRCReceiveTimer 0.9~1.1ms 表示每次通信收到goodcrc的时间,必须在这个时间内收到goodcrc, 我们要注意不是在0.9~1.1ms内,而是第三方可以在这个范

大师匈的博客 5007

mui获取经纬度和地址信息(百度地图 javascript api)

首先,介绍实现的原理: 通过使用百度地图提供的api进行开发。参考的是百度地图官方的javascript api文档。点击进入官方文档地址 在这之前,首先得获得百度地图api 的秘钥,头部引入需要: &lt;script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&amp;ak=你的秘钥"&gt;&lt;/s...

小书包大梦想的博客 1269

lammps教程:聚合物压缩,避免“bond atoms missing”

如果使用ms建模,聚合物的链会伸出到盒子外面,在导出data文件后,盒子外面的原子被周期性算法折叠进盒子对面,这就造成了边界附近的bond原子可能被分布到了盒子的两侧。并且,这个data文件不能使用npt系综进行压缩,npt系综必须使用周期性边界,在压缩时,bond原子同样会移动到对面的边界。所以,最好的解决办法是使用一个反射墙墙进行压缩,设置一个反射墙墙既可以实现压缩效果,也可以组织原子跨越box边界移动到对面。解决这个问题的原则只有一个:导出data时确保所有的bond原子没有跨越边界。

lammps_jiayou的博客 3819

基于YOLOv10的机器人抓取引导系统:从物体检测到精准抓取

python# 数据标注工具简化版import os"""启动标注工具""""""标注单张图像"""print(f"标注图像: {os.path.basename(img_path)}")print("请在图像上绘制抓取矩形框...")# 这里应该实现交互式标注界面# 简化版本直接返回示例标注# 示例标注数据"""保存标注结果"""# 保存为YOLO格式# 转换为YOLO格式。

YOLO 377

android使用百度地图定位(获取当前经纬度和地址信息)

首先,当然是把需要用到的包导入到工程项目中。(没有包的自己去百度API官网下载) 把 baidumapapi_v3_0_0.jar 和 locSDK_4.2.jar复制粘贴到项目的libs目录下, 然后,在libs目录下创建一个armeabi文件夹(有就不创建了),把libBaiduMapSDK_v3_0_0.so 和 liblocSDK4d.so赋值粘贴到armeabi目录下。

赵亮的博客 1万+

LLC变压器,常见的4大问题解决方案

其中之一是当付边的绕组的匝数或层数较多的时候,层间或匝间寄生电容和付边的漏感发生一个寄生的振荡,轻载的时候,这个振铃的幅度会达到很高,导致输出电压比设计的要高许多。但当输入是低压的时候,开关频率比较低,LLC谐振回路的增益较大,因而比较容易发生变压器饱和的问题。由于LLC变压器工作在LC谐振状态,LC谐振回路有个特点就是Q值问题,在这里Q值是大于1的,因而就会有实际加在变压器上的电压要比输入电压高的问题,因而在设计变压器的时候就必须考虑到这一点,否则变压器就不是工作在你设计的磁感应强度上。

1260

百度地图获取经纬度,经纬度转换为地址信息(简洁方式)

使用浏览器的 Geolocation API 或者百度地图 JavaScript API 中的定位功能获取用户的经纬度坐标。:使用获取到的经纬度坐标进行反向地理编码,将经纬度转换为地址信息。

weixin_63143453的博客 2946

R语言dplyr包recode函数、recode_factor函数数值或因子替换实战

R语言dplyr包recode函数、recode_factor函数数值或因子替换实战 目录 R语言dplyr包recode函数、recode_factor函数数值或因子替换实战 #导入dplyr包 #recode函数进行数值替换 #recode_factor函数对因子变量进行替换 #导入dplyr包 install.packages("dplyr") # Install & load dplyr library("dpl.

data+scenario+science+insight 1589

【AI大模型应用开发】【LangChain系列】实战案例6:利用大模型进行文本总结的方法探索,文本Token超限怎么办?

假设有一组文档(PDF、Notion页面、客户问题等),你想要总结内容。可以利用大模型来帮你。今天来系统看下利用大模型来对文本进行总结的方法,以LangChain的使用为例。

同学小张的博客 3749

Python请求百度地图API获取指定地址的经纬度信息

Python请求百度地图API获取指定地址的经纬度信息

Wangxihe0124的博客 910

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

根据经纬度获取百度地图的详细地址信息

1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestLocation.aspx.cs" Inherits="TestLocation" %> 2 3 <!DOCTYPE html> 4 5 <html xmlns="http://www.w3.org/1999/xhtml...

weixin_33709219的博客 202

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VUE 点击百度地图获取经纬度及地址信息

1、安装组件 npm install vue-baidu-map --save 2、注册组件 import {BaiduMap,BmNavigation,BmView,BmGeolocation,BmCityList} from 'vue-baidu-map' export default { name: "mapDialog", component...

小熙哥的博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

利用百度地图Geocoding API获取特定地区或地址的经纬度信息

Geocoding API 是百度提供的服务接口,主要是用于提供从地址解析到经纬度坐标或者从经纬度坐标解析到地址的转换服务,用户可以通过发送请求就可以接收到JSON或者XML格式的返回数据。 网络上大部分提供的代码啊,解决思想啊都是以google map为标准的,其实他们的解决思想都是异曲同工的。在此,发一个链接先让你了解了解这个百度地图API>Web服务API>Geocoding ...

weixin_30633949的博客 350

百度地图根据经纬度获取国家、州市等地址相关信息

这是一个简单的经纬度转换成具体地址信息,支持国际和国内经纬度转换。 效果如下图所示: function xmlToArray2($xml) { // 将XML转为array $array_data = json_decode(json_encode...

647

根据地理位置(地址)获取百度地图API下的经纬度信息

#encoding=utf8 #编码 import json import urllib.request #基于百度地图API下的经纬度信息来解析地理位置信息 def getlocation(lat,lng): #31.809928, 102.537467, 3019.300 #lat = '31.809928' #lng = '102.537467' url...

qq_37273544的博客 802
上一篇: 通过经纬度获取地址信息
下一篇: 关于rs.isAfterLast和rs.next的用法
github_zwl
博客等级 码龄11年 300粉丝 171原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值