利用GoogleApi根据经纬度查询地名,和根据地名查询经纬度
推荐安卓开发神器(里面有各种UI特效和android代码库实例)
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请求。
利用GoogleApi根据经纬度查询地名,和根据地名查询经纬度相关推荐
- Python之Pandas:利用Pandas函数实现对表格文件的查之高级查询(类似sql,分组查询等)之详细攻略
Python之Pandas:利用Pandas函数实现对表格文件的查之高级查询(类似sql,分组查询等)之详细攻略 目录 利用Pandas函数实现对表格文件的查之高级查询(类似sql) 1.分组查询
- 利用MyBatis的动态SQL特性抽象统一SQL查询接口
1. SQL查询的统一抽象 MyBatis制动动态SQL的构造,利用动态SQL和自定义的参数Bean抽象,可以将绝大部分SQL查询抽象为一个统一接口,查询参数使用一个自定义bean继承Map,使用映射 ...
- 根据两个经纬度点调用百度地图应用查询路线 适用android或者ios中及网页浏览(手机网页同样适用)
Intent intent = null;try {// 如果有安装百度地图 就启动百度地图StringBuffer sbs = new StringBuffer();sbs.append(" ...
- springboot controller 分页查询_Spring Boot实战分页查询附近的人: Redis+GeoHash+Lua
您的支持是我不断创作巨大动力 CSDN博客地址(关注,点赞) 人工智能推荐 GitHub(Star,Fork,Watch) 前言 最近在做社交的业务,用户进入首页后需要查询附近的人: 项目状况:前期尝 ...
- MySQL查询进阶之多表查询
一.多表查询 1.引出 2.笛卡尔积 3. 笛卡尔积的解决方法 二.多表查询分类 1.等值连接和非等值连接 2.自连接和非自连接 3.内连接和外连接 SQL92:使用(+)创建连接 SQL99语法实现 ...
- 1-6 数据查询(下)——复杂查询
1-6-4 多表连接查询及使用关系代数的理论查询数据 多表连接查询是用来连接两个表的条件称为连接条件或连接谓词,其一般格式为: [<表名1>.] <列名1> <比较运算 ...
- 相关子查询 与非相关子查询
1:标量子查询(相对于多值子查询): 只有标量子查询返回的是单个记录或者不返回,就是有效的子查询. Ex1:select OrderId From Orders where EmployeeId= ( ...
- C语言的成绩查询系统,c语言 成绩查询系统
设计目标 1.掌握用c语言进行程序设计的基本方法. 2.熟悉运用windows对文本进行的加工. 3.初步完成一个应用程序的设计和编码,以及编码的调试,了解程序设计的过程,锻炼个人的逻辑思维和程序设计 ...
- springboot封装统一查询对象进行多条件查询案例(mybatis和mybatis-plus+反射两种版本)
文章目录 mybatis版本: 通用查询接口 封装辅助查询类: 通用controller: 自定义注解 controller service mapper测试 mybatis-plus实现版本 ent ...
最新文章
- 让底部始终在浏览器底部
- css3学习 之 css选择器(css3 属性选择器)
- wpf(c#)中获取ComboBox选项值
- QNX设置开机启动命令来修改IP地址
- linux中awk工具的使用(转载)
- 如何成为一名出色的次世代游戏美术师?
- 怎样在xcode5中使用低版本sdk,解决兼容ios7ui问题
- 使用jQuery快速高效制作网页交互特效(1)
- [文摘20070816]家(周国平)
- python一切皆对象的理解
- 将APP发布到各大官方网站的方法,如华为、360手机助手、小米等
- 全球及中国细胞和基因治疗用融化设备行业发展模式及未来前景分析报告2022-2028年
- 彼岸花开开彼岸 奈何桥前可奈何 作者:天涯游子
- 如何将产品发布到App Store上?
- 智慧工厂之化工厂人员定位中的智能访客管理系统-新导智能
- 注册一个公众号多少钱_微信公众号申请注册收费吗?要钱吗?多少钱?
- 东北大学软件项目管理与过程改进复习提纲(2020)——第八章《项目质量管理》
- 基于LXC的GPU服务器搭建
- qq机器人代码c语言百度云,QQ机器人开源模块集合打包
- 一个穷苦大学毕业生的艰辛创业路