最近做一个社交软件、需要用到GPS、但是过程中有反向编码、也有正向编码、
但是很多时候Geocoder根本获取不到、始终是为空、经过本人二十四小时的不断baidu+google终于查看到其实这个Geocoder类并不是拿不到数据、只是访问能拿到数据的次数非常的小、
我放弃了该种获取经纬度取地址、也放弃了地址取经纬度
于是在一篇博客中偶然看到一个关于google的api的说法
关于用网络来拿到数据(网子如下)
https://developers.google.com/maps/documentation/geocoding/?hl=zh-CN#GeocodingRequests获得google的GPS服务的api文档
后来
次过程中将用到json解析数据、其中的非常简单、相信各位看本篇博客的人已经能找到json解析了
废话少说了准备上代码、如果有什么不懂本人候教
以下是本人做出来的一个关键类、
package com.hhj.gps;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
/*import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;*/
import android.R.integer;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class GoogleGeographyQuery{
static double lng;
static double lat;
/*查询经纬度*/
public static double[] jingweidu(String AddressName){
//List<Map<String, Object>> mData=new ArrayList<Map<String, Object>>();
String url = "http://maps.googleapis.com/maps/api/geocode/json?address=" + AddressName + "&sensor=false";
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
try {
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
InputStream input = entity.getContent();
int t;
StringBuffer buffer = new StringBuffer();
while ((t = input.read()) != -1) {
buffer.append((char) t);
}
//tv.setText(buffer);
// json解析
JSONObject object = new JSONObject(buffer.toString());
JSONObject location = object.getJSONArray("results")
.getJSONObject(0)// 获得中括号的内容
.getJSONObject("geometry")// 获得大括号中的内容
.getJSONObject("location");
lng = location.getDouble("lng");
lat = location.getDouble("lat");
Log.i("HHJ", "经纬度是 : "+lng+" "+lat);
double[] data ={lng,lat};
return data;
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static String geocodeAddr(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 = "";
}
Log.i("HHJ", "123 : "+addr);
}
insr.close();
}
} catch (IOException e) {
e.printStackTrace();
return null;
}
return addr;
}
}
如果需要demo源码请致电329716228@qq.com(附带本博客名字)
- 大小: 33.2 KB
分享到:
相关推荐
总结来说,获取Android设备的GPS经纬度并转换为地址,需要利用Location服务获取定位信息,然后通过Geocoding API或`Geocoder`将坐标解析为可读的地址。在实际应用中,还需要考虑位置权限的获取、GPS状态的检查以及...
本篇文章将深入探讨如何在Android应用中实现GPS定位,获取坐标信息,并利用这些信息进行地理编码(Geocoding)以获取详细的地理位置描述。 首先,为了在Android应用中使用GPS,我们需要在`AndroidManifest.xml`文件...
在Android原生开发中,获取GPS经纬度以及根据这些经纬度获取准确的地理位置信息是常见的需求。以下将详细讲解如何实现这一功能。 首先,我们需要理解GPS(全球定位系统)的基本概念。GPS是一种基于卫星导航的定位...
在Android系统中,获取设备的地理位置信息是移动应用开发中的常见需求,特别是在提供导航、位置服务或基于位置的社交功能时。本篇文章将详细介绍如何利用GPS(全球定位系统)技术在Android平台上获取设备的经纬度...
在Android开发中,获取当前设备的经纬度和地理位置是一项常见的任务。这主要涉及到Android的Location API,它允许开发者获取到用户设备的精确位置信息。在本文中,我们将深入探讨如何实现这一功能,并提供一个可运行...
在Android系统中,GPS(全球定位系统)是一个关键的组件,它允许应用程序获取用户的地理位置信息。这个技术在移动设备上广泛应用于导航、地图服务、社交应用以及各种位置依赖的活动。下面将详细介绍Android GPS坐标...
本篇文章将详细讲解如何在Android中使用GPS接口来获取地理位置信息。 首先,我们需要了解Android的位置API。在Android 6.0(API级别23)之前,主要使用`LocationManager`类来获取GPS数据。从Android 6.0开始,引入...
在Android系统中,GPS(全球定位系统)是移动设备获取地理位置信息的重要途径。这篇文档《Android_Gps.pdf》很可能是关于Android平台下GPS服务的开发和应用的详细指南。下面,我们将深入探讨Android GPS开发的一些...
在Android系统中,GPS(全球定位系统)是实现位置服务的关键技术之一,它允许应用程序获取用户的精确地理位置信息。本文将深入探讨Android中的GPS定位机制、API的使用以及相关的编程实践。 1. **Android GPS定位...
地区名称通常需要通过经纬度查询地理编码服务来获取,例如使用`Geocoder`类,但注意该服务可能在某些设备或地区不可用。 7. **地理编码与逆向地理编码**: - **地理编码**:将地址转换为经纬度坐标。 - **逆向...
在Android平台上,GPS系统是一种重要的移动定位技术,它允许设备获取当前位置信息并提供导航服务。本文将深入探讨基于Android 2.3(Gingerbread)的GPS系统的研究与实现,主要包括用户设置、GPS定位、地址解析、反...
总结,获取Android设备的当前经纬度涉及了Android的定位服务,包括GPS和网络定位,并且可以通过Geocoder进一步获取详细的地理位置信息。在实际开发中,为了提高用户体验,通常会结合这两种方式,优先尝试GPS定位,...
在Android平台上,GPS(全球定位系统)定位是开发者获取设备地理位置信息的重要手段。这个"Android GPS定位源码"提供了一种实现方式,帮助开发者能够获取到经纬度信息,从而实现各种基于位置的服务,如导航、地图...
在Android开发中,有时我们需要根据用户的GPS坐标(经度和纬度)获取具体的地理位置信息,如地址、名称、电话和邮编等。这通常涉及到地理编码(Geocoding)的过程,即通过地理位置坐标反向查询到人类可读的地址信息...
例如,可能需要创建一个`Geocoder`对象,然后调用`getFromLocationName()`或`getFromLocation()`方法来获取位置信息。同时,确保你有正确的API密钥(如果需要)以及理解任何可能的限制,如请求速率限制。 在实际...
在Android平台上,获取GPS(全球定位系统)信息是开发地理定位相关应用的重要环节。这篇资源主要涉及了如何通过Java编程语言来实现这一功能。这里我们将深入探讨相关知识点,包括Android的Location API、权限管理、...
这个"Android GPS定位例子"是一个实现GPS定位功能的示例项目,它已经被测试并确认能够正常运行,尽管GPS定位通常需要一定时间来获取精确的位置信息。 Android系统提供了一套完整的API,即Location API,用于获取...
开发者可以注册监听器(LocationListener)来获取位置更新,同时通过请求特定的定位提供者(如GPS或网络定位)来获取地理位置信息。 二、获取GPS权限 在AndroidManifest.xml文件中,需要声明使用GPS的权限: ```xml...
在IT行业中,尤其是在Web开发领域,常常需要利用地图服务来获取和展示地理位置信息。Google Maps API 是一个广泛使用的工具,它允许开发者通过JavaScript或者其他的编程语言与Google Maps进行交互,实现各种功能,如...