通过经纬度获得地址与城市名称
具体调用方式如下:
代码如下 | 复制代码 |
jaddrobj = GetJsonAddr(String.valueOf(dLat), String.valueOf(dLong)); if (jaddrobj==null) { jaddrobj = SysUtil.GetJsonAddr(String.valueOf(dLat), String.valueOf(dLong)); } if (jaddrobj!=null) { jsobj = jaddrobj.getJSONObject("Status"); if(jsobj.getString("code").equals("200")){ jplacearr = jaddrobj.getJSONArray("Placemark"); jplaceobj = jplacearr.getJSONObject(0); address = jplaceobj.getString("address"); grobaldata.myAddress = address;// 当前地址放到全局变量里 grobaldata.curAddress = address;// 当前地址放到全局变量里 city = jplaceobj.getJSONObject("AddressDetails").getJSONObject("Country") .getJSONObject("AdministrativeArea").getJSONObject("Locality") .getString("LocalityName"); } else { rtValue = "error"; } } |
/**
* 根据经纬度反向解析地址,有时需要多尝试几次
* 注意:(摘自: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 JSONObject * * @author lvqiyong */ /*例子如下: * { "name": "29.871398,121.5817", "Status": { "code": 200, "request": "geocode" }, "Placemark": [ { "id": "p1", "address": "中国浙江省宁波市江东区中兴路360号 邮政编码: 315040", "AddressDetails": { "Accuracy" : 8, "Country" : { "AdministrativeArea" : { "AdministrativeAreaName" : "浙江省", "Locality" : { "DependentLocality" : { "DependentLocalityName" : "江东区", "Thoroughfare" : { "ThoroughfareName" : "中兴路360号" } }, "LocalityName" : "宁波市" } }, "CountryName" : "中国", "CountryNameCode" : "CN" } }, "ExtendedData": { "LatLonBox": { "north": 29.8737610, "south": 29.8710630, "east": 121.5832290, "west": 121.5805310 } }, "Point": { "coordinates": [ 121.5818800, 29.8724120, 0 ] } } ] }*/ public static JSONObject GetJsonAddr(String latitude, String longitude) {
// 也可以是http://maps.google.cn/maps/geo?output=csv&key=abcdef&q=%s,%s,不过解析出来的是英文地址 // 密钥可以随便写一个key=abc // output=csv,也可以是xml或json,采用默认的方式是output=json String url = String .format( "http://ditu.google.cn/maps/geo?key=abcdef&q=%s,%s", latitude, longitude); HttpGet httpGet = new HttpGet(url); HttpClient client = new DefaultHttpClient(); HttpResponse response; StringBuilder stringBuilder = new StringBuilder();
try { response = client.execute(httpGet); /* HttpEntity entity = response.getEntity(); InputStream stream = entity.getContent(); int b; while ((b = stream.read()) != -1) { stringBuilder.append((char) b); }*/ HttpEntity entity = response.getEntity(); BufferedReader br = new BufferedReader(new InputStreamReader(entity .getContent())); String result = br.readLine(); while (result != null) { stringBuilder.append(result); result = br.readLine(); } } catch (ClientProtocolException e) { } catch (IOException e) { }
JSONObject jsonObject = new JSONObject(); try { jsonObject = new JSONObject(stringBuilder.toString()); } catch (JSONException e) { e.printStackTrace(); }
return jsonObject; } |
普通形式的:
服务器端返回的json数据格式如下:
代码如下 | 复制代码 |
{"userbean":{"Uid":"100196","Showname":"u75afu72c2u7684u7334u5b50","Avtar":null,"State":1}} |
分析代码如下:
代码如下 | 复制代码 |
// TODO 状态处理 500 200 JSONObject jsonObject = new JSONObject(builder.toString()) String Uid; Uid = jsonObject.getString("Uid"); |
带数组形式的:
服务器端返回的数据格式为:
代码如下 | 复制代码 |
{"calendar": {"calendarlist": [ {"calendar_id":"1705","title":"(u4eb2u5b50)ddssd","category_name":"u9ed8u8ba4u5206u7c7b","showtime":"1288927800","endshowtime":"1288931400","allDay":false}, {"calendar_id":"1706","title":"(u65c5u884c)","category_name":"u9ed8u8ba4u5206u7c7b","showtime":"1288933200","endshowtime":"1288936800","allDay":false} ] } } |
分析代码如下:
代码如下 | 复制代码 |
// TODO 状态处理 500 200 int res = 0; res = httpClient.execute(httpPost).getStatusLine().getStatusCode(); if (res == 200) { /* * 当返回码为200时,做处理 * 得到服务器端返回json数据,并做处理 * */ HttpResponse httpResponse = httpClient.execute(httpPost); StringBuilder builder = new StringBuilder(); BufferedReader bufferedReader2 = new BufferedReader( new InputStreamReader(httpResponse.getEntity().getContent())); String str2 = ""; for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2 .readLine()) { builder.append(s); } Log.i("cat", ">>>>>>" + builder.toString()); /** * 这里需要分析服务器回传的json格式数据, */ JSONObject jsonObject = new JSONObject(builder.toString()) .getJSONObject("calendar"); JSONArray jsonArray = jsonObject.getJSONArray("calendarlist"); for(int i=0;i<jsonArray.length();i++){ JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i); CalendarInfo calendarInfo = new CalendarInfo(); calendarInfo.setCalendar_id(jsonObject2.getString("calendar_id")); calendarInfo.setTitle(jsonObject2.getString("title")); calendarInfo.setCategory_name(jsonObject2.getString("category_name")); calendarInfo.setShowtime(jsonObject2.getString("showtime")); calendarInfo.setEndtime(jsonObject2.getString("endshowtime")); calendarInfo.setAllDay(jsonObject2.getBoolean("allDay")); calendarInfos.add(calendarInfo); } |
总结,普通形式的只需用JSONObject ,带数组形式的需要使用JSONArray 将其变成一个list。
本文章介绍了一个关于android通过http来实现文件上传功能,在服务器端我们是用php来实现的,有需要的朋友可以参考一下代码如下 | 复制代码 |
<?php ///如果有上传文件则接收 if($_FILES){ $target_path = $target_path . basename( $_FILES['file1']['name']); try{ if(move_uploaded_file($_FILES['file1']['tmp_name'], $target_path)) { echo "The file ". basename( $_FILES['file1']['name']). " has been uploaded"; } } catch( Exception $e ) { echo $e->getMessage(); } } ?> Android 代码: package com.nbcio.baishicha.test; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.Toast;
/* * 变量声明 newName:上传后在服务器上的文件名称 * * uploadFile:要上传的文件路径 actionUrl:服务器对应的程序路径 */ private String newName = ""; private String uploadFile = ""; private String actionUrl = "http://www.111cn.net/index.php";//这里定义你的上传路径
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle bundle = intent.getExtras(); newName = bundle.getString("fileName"); uploadFile = newName; String ok = post(actionUrl, newName); Toast.makeText(this, "OK!", Toast.LENGTH_LONG).show(); finish();
// // TODO Auto-generated catch block e.printStackTrace(); }
/** * * @param actionUrl * @param params * @param files * @return * @throws IOException */ public static String post(String actionUrl, String FileName) throws IOException {
String PREFIX = "--", LINEND = "rn"; String MULTIPART_FROM_DATA = "multipart/form-data"; String CHARSET = "UTF-8";
HttpURLConnection conn = (HttpURLConnection) uri.openConnection(); conn.setReadTimeout(5 * 1000); // 缓存的最长时间 conn.setDoInput(true);// 允许输入 conn.setDoOutput(true);// 允许输出 conn.setUseCaches(false); // 不允许使用缓存 conn.setRequestMethod("POST"); conn.setRequestProperty("connection", "keep-alive"); conn.setRequestProperty("Charsert", "UTF-8"); conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA + ";boundary=" + BOUNDARY);
conn.getOutputStream());
if (FileName != "") {
sb1.append(PREFIX); sb1.append(BOUNDARY); sb1.append(LINEND); sb1.append("Content-Disposition: form-data; name="file1"; filename="" + FileName + """ + LINEND); sb1.append("Content-Type: application/octet-stream; charset=" + CHARSET + LINEND); sb1.append(LINEND); outStream.write(sb1.toString().getBytes());
byte[] buffer = new byte[1024]; int len = 0; while ((len = is.read(buffer)) != -1) { outStream.write(buffer, 0, len); } outStream.write(LINEND.getBytes()); byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes(); outStream.write(end_data); outStream.flush(); int res = conn.getResponseCode(); InputStream in = null; if (res == 200) { in = conn.getInputStream(); int ch; StringBuilder sb2 = new StringBuilder(); while ((ch = in.read()) != -1) { sb2.append((char) ch); } } return in == null ? null : in.toString(); } } |
代码如下 | 复制代码 |
: import java.io.File; import android.content.Context; /** /** /** public AsyncImageView(Context context) { public AsyncImageView(Context context, AttributeSet attrs) { public AsyncImageView(Context context, AttributeSet attrs, int defStyle) { /** /** @Override @Override /** /** /** /** @Override @Override @Override /** File file = new File(fileName); /** /** |
下面是具体的代码
/**
* 向网站发送get请求,url需按照api要求写,返回取得的信息。
* //这个专门给大众点评传入cookie参数用,目的是为了获得用户选择的城市信息
* @param url
* @param client
* @return String
* @author lvqiyong
*/
代码如下 | 复制代码 |
public static String getRequest1(String url, DefaultHttpClient client, String charset) throws Exception { String result = null; int statusCode = 0; HttpGet getMethod = new HttpGet(url); Log.d(TAG, "do the getRequest,url=" + url + ""); try { getMethod.setHeader("User-Agent", USER_AGENT); getMethod.setHeader("Cookie", "cy=" + value);//这个专门给大众点评传入cookie参数用,目的是为了获得用户选择的城市信息 // 添加用户密码验证信息 // client.getCredentialsProvider().setCredentials( // new AuthScope(null, -1), // new UsernamePasswordCredentials(mUsername, mPassword));
HttpResponse httpResponse = client.execute(getMethod); // statusCode == 200 正常 statusCode = httpResponse.getStatusLine().getStatusCode(); Log.d(TAG, "statuscode = " + statusCode); // 处理返回的httpResponse信息 if (statusCode == 200) { result = retrieveInputStream(httpResponse.getEntity(), charset); Cookie cookie; String cookname,cookvalue; List<Cookie> cookies = client.getCookieStore().getCookies(); if (cookies.isEmpty()) { Log.i(TAG, "-------Cookie NONE---------"); } else { for (int i = 0; i < cookies.size(); i++) { // 保存cookie cookie = cookies.get(i); cookname = cookie.getName().trim(); cookvalue = cookie.getValue().trim(); if(cookname.equals("cy")){ name = cookname; value = cookvalue; } } } } else result = "networkerror"; } catch (ConnectTimeoutException e) {// 超时或网络连接出错 result = "timeouterror"; // e.printStackTrace(); } catch (ClientProtocolException e) { result = "networkerror"; // e.printStackTrace(); } catch (Exception e) { result = "readerror"; Log.e(TAG, e.getMessage()); throw new Exception(e); } finally { getMethod.abort(); } return result; } |
相关文章
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
本文给大家介绍javascript实现高德地图和百度地图提取行政区边界经纬度坐标的相关知识,本文实用性非常高,代码简单易懂,需要的朋友参考下吧...2016-01-24- c#获取本机的IP地址的代码,需要的朋友可以参考一下...2020-06-25
- 这篇文章主要为大家详细介绍了微信小程序实现选择地址省市区三级联动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-21
- 这篇文章主要介绍了百度地图API之百度地图退拽标记点获取经纬度的实现代码,需要的朋友可以参考下...2017-01-16
- 这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
- 这篇文章主要介绍了C#实现获取MAC地址的方法,很实用的功能,需要的朋友可以参考下...2020-06-25
Microsoft Expression Web 简体中文正式版 官方下载地址
Microsoft Expression Web 简体中文正式版相对于早期的 Microsoft Expression Web Designer CTP1(英文)除了它是正式的中文版外,有进步的地方1.对标签的id名称加上了css的代...2020-06-25- PHP IP地址格式检测函数复制代码 代码如下:function checkIp($ip){ $ip = str_replace(" ", "", $ip); $ip = strtolower($ip); $ip= str_replace("http://", "", $ip); $ip= str_replace("https://", ""...2013-10-04
- 这篇文章主要介绍了C#获取路由器外网IP,MAC地址的实现代码,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了php判断邮箱地址是否存在的方法,php判断邮箱地址是否存在的方法有两种,感兴趣的朋友可以参考一下...2016-02-18
- 这篇文章主要介绍了C# URL短地址压缩算法及短网址原理解析,本文重点给出了算法代码,需要的朋友可以参考下...2020-06-25
解决使用了nginx获取IP地址都是127.0.0.1 的问题
这篇文章主要介绍了解决使用了nginx获取IP地址都是127.0.0.1 的问题,获取i工具的完整代码文中给大家提到,具体实例代码跟随小编一起看看吧...2021-09-18- 这篇文章介绍了php获取当前url地址的方法小结,有兴趣的同学可以参考一下 本文实例讲述了php获取当前url地址的方法。分享给大家供大家参考,具体如下: js 获取: ...2017-01-22
整理的7款常用的开源免费的Android UI组件及官方下载地址
Android开发技术日趋成熟,开源社区也涌现了很多开源UI项目,以下是笔者整理的7款Android开发者常用的Android UI组件及官方下载地址。 Android开发是目前最热门的移...2016-09-20- 最近做个项目,需要实现获取当前位置的经纬度,所以本文主要介绍了vue中调用百度地图获取经纬度的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-16
- 一篇php中匹配邮箱地址正则表达式实例,邮箱地址替换正则我常用的正则匹配表达式:/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\\.][a-z]{2,3}([\\....2016-11-25
- 一个段经典的代码可以用来获取用户的真实IP地址,包括可以是内网或是外网,有需要的朋友可以参考一下。 代码如下 复制代码 /** * 获得用户的...2016-11-25
- 获取当前页面的url地址php代码,第一款是一款获取无参数URL第二款是获取完整URL函数哦,如果你正找url参数的代码哦。 代码如下 复制代码 <?php...2016-11-25
- 这篇文章主要介绍了在VMware虚拟机中查看Linux的IP地址的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-16
- 正则提取图片中的地址我们介绍过很多的相关文章了,下面再来给各位介绍一个可以提取内容中第一张图片的例子,希望对各位有帮助。 代码如下 复制代码 ...2016-11-25