根据城市的三字代码查询经纬度_根据经纬度获取所在城市的相关信息以及根据地点城市获取经纬度...

什么是Geocoding?

Geocoding API是一个供程序员调用的、http形式的地图服务接口。主要服务那些非网页程序的调用。例如C#、C++、Java等开发语言都能发送http请求且能接收返回数据。

用户只需在请求的url字串中拼接好关键字或者经纬度信息,即可获取到相应的百度经纬度或者结构化地理信息。

Geocoding API有哪些功能?

Geocoding API包括地址解析和逆地址解析功能。

·地址解析是指,由详细到街道的结构化地址得到百度经纬度信息,且支持名胜古迹、标志性建筑名称直接解析返回百度经纬度。例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.31985,lat:39.959836”,“百度大厦”地址解析的结果是“lng:116.30815,lat:40.056885”

·逆地址解析是指,由百度经纬度信息得到结构化地址信息。例如:“lat:31.325152,lng:120.558957”逆地址解析的结果是“江苏省苏州市虎丘区塔园路318号”。

使用限制

目前无任何使用限制。请申请key,然后使用该接口。

如何使用

第一步,申请key,点击这里,申请key需要注册百度账号;

第二步,拼写发送http请求的url,注意需使用第一步申请的key;

第三步,接收http请求返回的数据(支持json和xml格式)。

服务地址

服务地址

·地址解析:根据地址获取坐标

·逆地址解析:根据坐标获取地址

备注:

1. city属于可选参数,通常情况可以不使用,若解析无结果,请尝试增加此字段。

2.支持名胜古迹、标志性建筑物名称解析返回百度经纬度坐标,如address=“百度大厦”。

3.支持使用“*路与*路交叉口”方式解析返回百度经纬度坐标,若地址库中存在该地址描述,返回百度经纬度坐标。

4.若解析status字段为OK,若结果内容为空,原因分析及可尝试方法:

·地址库里无此数据,本次结果为空。

·加入city字段重新解析;

·将过于详细或简单的地址更改至省市区县街道重新解析;

5.特别提醒:逆地址解析location参数传入的参数格式是(纬度lat,经度lng)。

接口参数

参数

是否必须

默认值

格式举例

含义

output

json

json或xml

输出格式为json或者xml

address

北京市海淀区上地十街10号

根据指定地址进行坐标的反定向解析

location

38.76623,116.43213

lat,lng

根据指定坐标来进行地址的解析

city

“北京市”

“广州市”

地址所在的城市名

key

8cb976834235d8cbcde2dce4835ae191

用户申请注册的key

上表中address和location两个字段如果同时出现,则优先选择address执行地理编码功能。对于address字段可能会出现中文或其它一些特殊字符(如:空格),所以对于类似的字符都要进行编码处理,编码成UTF-8字符的二字符十六进制值,凡是不在下表中的字符都要进行编码。

字符集合

字符

URL非保留字

a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 - _ . ~

URL保留字

! * ' ( ) ; : @ & = + $ , / ? % # [ ]

附注:

(1)javascript中一般采用encodeURIComponent函数对特殊字符进行编码。

(2) Java中可以使用函数URLEncoder.encode对特殊字符进行编码。

(3) C#中可以使用函数HttpUtility.UrlEncode对特殊字符进行编码。

(4) php中可以使用函数urlencode对特殊字符进行编码。

返回数据说明

返回结果(地址解析的结果)

{status: '字符串状态常量',取值如下:

//OK成功

INVILID_KEY非法密钥

INVALID_PARAMETERS非法参数,参数错误时候给出。

result: {

location: {

lat:纬度:数值,

lng:经度:数值

},

precise:’位置的附加信息,是否精确查找’(1为精确查找,0为不精确查找),

confidence:可信度,

level:'级别'

},

}

返回结果(反地址解析的结果)

{status: '字符串状态常量',取值如下:

//OK成功

INVILID_KEY非法密钥

INVALID_PARAMETERS非法参数,参数错误时候给出。

result: {

location: {

lat:纬度:数值,

lng:经度:数值

},

formatted_address: ‘详细地址描述’,

business: '周围商圈',

addressComponent:{

city:’城市名称’,

district: ‘区县名称’,

province:’省份名称’,

street: ‘街道名称’,

streetNumber: '门牌号码'

},

cityCode: '城市代码'

}

}

接口示例

根据详细地址获取坐标

在指定城市内检索详细地址的坐标

根据特定建筑物获取它的坐标

根据“*路与*路交叉路口”类型地址描述获得它的坐标

根据坐标获取它的地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要根据经纬度获取城市信息,你需要使用逆地理编码(reverse geocoding)服务。以下是使用 Java 实现的示例代码,基于百度地图的逆地理编码 API: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; public class GeoCodingService { private static final String BAIDU_MAP_API = "http://api.map.baidu.com/geocoder/v2/?ak=YOUR_AK&location=%s,%s&output=json&pois=0"; public static void main(String[] args) throws IOException { String lat = "39.983424"; String lng = "116.322987"; String address = getAddressByGeoCoding(lat, lng); System.out.println("Address: " + address); } public static String getAddressByGeoCoding(String lat, String lng) throws IOException { String urlStr = String.format(BAIDU_MAP_API, lat, lng); URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); conn.connect(); int responseCode = conn.getResponseCode(); if (responseCode == 200) { InputStream inputStream = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder responseBuilder = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { responseBuilder.append(line); } reader.close(); inputStream.close(); String response = responseBuilder.toString(); // 解析 JSON 响应,获取地址信息 // 这里需要使用 JSON 解析库,例如 Jackson、Gson 等 // 这里以 Jackson 为例 ObjectMapper mapper = new ObjectMapper(); JsonNode rootNode = mapper.readTree(response); JsonNode resultNode = rootNode.get("result"); if (resultNode != null) { JsonNode addressComponentNode = resultNode.get("addressComponent"); if (addressComponentNode != null) { String province = addressComponentNode.get("province").asText(); String city = addressComponentNode.get("city").asText(); String district = addressComponentNode.get("district").asText(); String street = addressComponentNode.get("street").asText(); return province + city + district + street; } } } return null; } } ``` 在示例代码中,我们使用了百度地图的逆地理编码服务,需要在 `BAIDU_MAP_API` 常量中填写你的百度地图 API 密钥。`getAddressByGeoCoding` 方法接收经纬度参数 `lat` 和 `lng`,发送 HTTP GET 请求到逆地理编码 API,获取响应后解析 JSON 响应,提取地址信息并返回。注意,示例代码仅供参考,你需要根据具体情况进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值