利用GoogleApi根据经纬度查询地名,和根据地名查询经纬度
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;
public class Demo {
public static void main(String[] args) {
String addr = GetAddr("35.8616600", "104.1953970");
System.out.println(addr);
//getCoordinate("中国");
}
/**
* 根据经纬度反向解析地址,有时需要多尝试几次
* 注意:(摘自:http://code.google.com/intl/zh-CN/apis/maps/faq.html
* 提交的地址解析请求次数是否有限制?) 如果在 24 小时时段内收到来自一个 IP 地址超过 2500 个地址解析请求, 或从一个 IP
* 地址提交的地址解析请求速率过快,Google 地图 API 编码器将用 620 状态代码开始响应。 如果地址解析器的使用仍然过多,则从该 IP
* 地址对 Google 地图 API 地址解析器的访问可能被永久阻止。
*
* @param latitude
* 纬度
* @param longitude
* 经度
* @return
*/
public static String GetAddr(String latitude, String longitude) {
String addr = "";
// 也可以是http://maps.google.cn/maps/geo?output=csv&key=abcdef&q=%s,%s,不过解析出来的是英文地址
// 密钥可以随便写一个key=abc
// output=csv,也可以是xml或json,不过使用csv返回的数据最简洁方便解析
String url = String.format(
"http://ditu.google.cn/maps/geo?output=csv&key=abcdef&q=%s,%s",
latitude, longitude);
URL myURL = null;
URLConnection httpsConn = null;
try {
myURL = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
}
try {
httpsConn = (URLConnection) myURL.openConnection();
if (httpsConn != null) {
InputStreamReader insr = new InputStreamReader(
httpsConn.getInputStream(), "UTF-8");
BufferedReader br = new BufferedReader(insr);
String data = null;
if ((data = br.readLine()) != null) {
System.out.println(data);
String[] retList = data.split(",");
if (retList.length > 2 && ("200".equals(retList[0]))) {
addr = retList[2];
addr = addr.replace("\"", "");
} else {
addr = "";
}
}
insr.close();
}
} catch (IOException e) {
e.printStackTrace();
return null;
}
return addr;
}
public static void getCoordinate(String addr)
{
String addrs = "";
String address = null;
try {
address = java.net.URLEncoder.encode(addr,"UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
};
String output = "csv";
String key = "abc";
String url = String.format("http://maps.google.com/maps/geo?q=%s&output=%s&key=%s", address, output, key);
URL myURL = null;
URLConnection httpsConn = null;
//进行转码
try {
myURL = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
httpsConn = (URLConnection) myURL.openConnection();
if (httpsConn != null) {
InputStreamReader insr = new InputStreamReader(
httpsConn.getInputStream(), "UTF-8");
BufferedReader br = new BufferedReader(insr);
String data = null;
if ((data = br.readLine()) != null) {
System.out.println(data);
String[] retList = data.split(",");
/*
String latitude = retList[2];
String longitude = retList[3];
System.out.println("纬度"+ latitude);
System.out.println("经度"+ longitude);
*/
if (retList.length > 2 && ("200".equals(retList[0]))) {
addrs = retList[2];
addrs = addr.replace("\"", "");
} else {
addrs = "";
}
}
insr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(addrs);
}
}
============================
国内的详细地址有其他地址解析服务器提供更加详细的地址解析服务,或者把数据请求后放到自己服务器,下次用户请求先从自己服务器请求,找不到地址时再去Google请求。
分享到:
相关推荐
综上所述,Android通过LocationManager获取设备的经纬度,结合Google Maps API可以在地图上显示位置,并通过Geocoding API将坐标转换为地址,从而实现以经纬度查找目的位置的功能。在实际开发中,还需要考虑权限处理...
"Android手机开发之2_以经纬度查找目的地地址的源程序"是一个针对初级开发者的学习资源,它教你如何通过已知的经纬度坐标来查找并显示对应的目的地地址。这个项目的核心是利用Google的Geocoding API,该API能够将...
2. **反向地理编码**:使用GeoAPI.NET或Google Maps API,根据经纬度查找对应的地址信息。这通常涉及到发送一个包含经纬度的请求到服务,并接收包含地址详细信息的响应。 3. **解析响应**:接收到的响应通常包含JSON...
3. **空间查询**:使用`geotools`的SpatialQuery API,根据经纬度坐标在数据中查找包含该点的城市多边形或边界线。 4. **匹配过程**:通过比较经纬度坐标与城市边界的关系,确定最合适的匹配城市。这可能涉及到距离...
地理编码API可以将地址转换为经纬度坐标,反之亦然,这对于实现基于位置的服务至关重要。路由计算API则能计算两点或多点之间的最佳路径,包括交通情况、驾驶规则等因素。距离矩阵API则用于获取多个起点到多个终点的...
在Android开发中,根据经纬度查询地址并解析JSON数据是一个常见的需求,这通常涉及到地理编码(Geocoding)服务和JSON解析技术。本教程将详细讲解如何实现这一功能。 首先,我们需要了解如何从Google Maps ...
在Java中,我们可以使用第三方库如GeoTools或Google的Geocoding API来将地址解析为对应的经纬度坐标。这个过程通常涉及网络请求,将地址发送到地图服务提供商,然后解析返回的JSON或XML数据,从中提取出经度和纬度值...
通过调用这些API,输入经纬度,返回的是一个地址对象,包含了详细的街道地址、城市、区域等信息。 在实际应用中,如GPS导航、位置服务、物联网设备定位等,这两个功能都非常重要。例如,当一个手机应用需要提供导航...
这可以通过Google Maps Geocoding API完成,提供一个地址或位置名称,API将返回其对应的经纬度坐标。 4. **谷歌地图API(Google Map v3)**:`index.php`应该是主展示页面,其中嵌入了谷歌地图API的JavaScript库。...
这个API允许开发者通过编程方式查询地址,并返回包含经纬度的地理位置信息。例如,你可以发送一个HTTP请求,包含你要查询的地址,API会返回一个JSON格式的响应,其中包含"lat"(纬度)和"lng"(经度)字段。这在开发...
软件的工作原理通常是通过结合全球定位系统(GPS)数据、地理编码服务(如Google Maps API、高德地图API等)和数据库,查找对应的街道地址或其他地理特征。用户输入经纬度后,软件会通过查询这些服务,匹配出最接近...
在给定的“PointAddress.zip_经纬度_经纬度点”压缩包中,我们可以推测其主要内容是关于通过经纬度坐标来查找并解析出对应地点的行政区划信息,包括省、市、县等层次。这个工具或者数据集对于物流配送、地图应用、...
API提供了一系列接口和方法,用于加载地图、添加标记、绘制路径、实现地理编码(地址转经纬度)和反地理编码(经纬度转地址)等功能。 **API的集成与设置**是使用Google Maps API的第一步。开发者需要在Google ...
6. **本地搜索**:通过Google Maps API的本地搜索服务,开发者可以集成地图上的地点搜索功能,帮助用户快速找到附近的餐馆、咖啡厅、酒店等。 7. **网点管理系统**:利用API,开发者可以构建一个系统来管理各种实体...
查询操作则可以通过SELECT语句实现,比如根据特定条件查找最近的位置记录。 为了简化数据库操作,开发者通常会使用ORM(对象关系映射)框架,如Android的Room库或iOS的CoreData。这些框架允许开发者用面向对象的...
腾讯地图和百度地图作为国内两大主流地图服务商,各自提供了丰富的API供开发者使用。然而,由于两家地图服务商的坐标系不同,直接使用经纬度可能会导致定位偏差。为了解决这个问题,我们需要进行坐标转换。这个名为...
在本实例中,我们主要探讨如何使用GoogleMap API进行二次开发,并结合Asp.Net、数据库以及GPS技术,创建一个功能丰富的Web应用。首先,我们来深入理解这些关键知识点。 1. GoogleMap API: GoogleMap API是Google...
4. Geocoding API:将地址转换为经纬度坐标(反向地理编码)或将坐标转换为地址(正向地理编码),是地图应用的基础功能。 5. Elevation API:获取地球表面的海拔数据,可用于创建地形图或者分析地势。 6. Places ...
总的来说,Google Maps API是一个功能强大且灵活的工具,它使得Web开发者可以轻松地集成地图功能,并根据自己的需求进行高度定制。通过学习和实践,开发者可以利用这个API构建出丰富多样的地图应用。
4. **服务处理**:Web Service服务器端接收到请求后,会使用GIS库或地图API(如Google Maps API、Bing Maps API、高德地图API等)对地址进行地理编码,将地址转化为对应的经纬度坐标。 5. **返回响应**:服务端计算...