使用LBS(地理位置)
一.使用之前的简单封装的OkHttpUtil
http://www.cnblogs.com/itfenqing/p/6758909.html
二.关键代码:
public class MainActivity extends Activity {
private TextView tip;
private LocationManager locationManager;
private String provider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tip = (TextView)findViewById(R.id.tip);
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
// 获取所有可用的地理位置提供器
List<String> providerList = locationManager.getProviders(true);
if( providerList.contains(locationManager.GPS_PROVIDER) ){
provider = locationManager.GPS_PROVIDER;
}else if( providerList.contains(locationManager.NETWORK_PROVIDER) ){
provider = locationManager.NETWORK_PROVIDER;
}else{
Toast.makeText(this, "没有地理位置提供器", Toast.LENGTH_LONG).show();
return;
}
Location location = null;
try {
location = locationManager.getLastKnownLocation(provider);
}catch (SecurityException e){
e.printStackTrace();
}
if(location != null){
showLocation(location);
}
try{
// 设置一个监听器,每1秒检测一次,位置移动超过1米,则更新
locationManager.requestLocationUpdates(provider,
,
,
listener);
}catch (SecurityException e){
e.printStackTrace();
}
}
// 监听器
LocationListener listener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
showLocation(location);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
private void showLocation(Location location){
String url = "http://api.map.baidu.com/geocoder/v2/?ak=nUvlnh8wk6cDupYs5foacyXz&" +
"location="+location.getLatitude()+","
+location.getLongitude()+"&output=json&pois=1";
// 异步获取
OkHttpUtil.AsyncGet(url, new HttpListener() {
@Override
public void onFinish(String reponse) {
parseJson(reponse);
}
@Override
public void onError(Exception e) {
e.printStackTrace();
}
});
//String tipStr = "纬度:" + location.getLatitude() + ",经度:" + location.getLongitude();
//tip.setText(tipStr);
}
// parseJson
private void parseJson(String jsonStr){
try {
final StringBuilder info = new StringBuilder();
JSONObject json = new JSONObject(jsonStr);
if( json.get("status").toString().equals("") ){
info.append("经度" + json.getJSONObject("result")
.getJSONObject("location").get("lng").toString());
info.append(",纬度" + json.getJSONObject("result")
.getJSONObject("location").get("lat").toString());
info.append(",地理位置" + json.getJSONObject("result")
.get("formatted_address").toString());
runOnUiThread(new Runnable() {
@Override
public void run() {
tip.setText(info.toString());
}
});
}
}catch (Exception e){
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// 取消监听
if( locationManager != null ){
try {
locationManager.removeUpdates(listener);
}catch (SecurityException e){
e.printStackTrace();
}
}
}
}
三.所需权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
使用LBS(地理位置)的更多相关文章
- 项目源码--JAVA基于LBS地理位置信息应用的服务端
技术要点: 1. LBS应用框架服务端实现 2. JAVA服务端技术 3. MYSQL数据库技术 4. 源码带详细的中文注释 ...... 详细介绍: 1. LBS应用框架服务端实现 此套源码是基 ...
- 什么是LBS?地理位置服务
做微信开发中必有的LBS,查了下复制过来做个了解. 关键字:定位 服务 基于位置的服务,是指通过电信移动运营商的无线电通讯网络或外部定位方式,获取移动终端用户的位置信息,在GIS平台的支持下,为用户提 ...
- 项目源码--Android基于LBS地理位置信息应用的客户端
下载源码 技术要点: 1. LBS应用框架客户端实现 2. 登录与注册系统 3. TAB类型UI实现 4. HTTP通信模块 5. 源码带详细的中文注释 ...... 详细介绍: 1. LBS应用框架 ...
- LBS地理位置距离计算方法之geohash算法
随着移动终端的普及,很多应用都基于LBS功能,附近的某某(餐馆.银行.妹纸等等).基础数据中,一般保存了目标位置的经纬度:利用用户提供的经纬度,进行对比,从而获得是否在附近.这里需要在设置出一个字段, ...
- ***微信LBS地理位置开发+百度地图API(地理位置和坐标转换)
微信公众平台开发 - 获取用户地理位置 本文介绍在微信公众平台上如何使用高级接口开发获取用户地理位置的功能. 一.获取用户地理位置接口 开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会 ...
- 基于LBS的地理位置附近的搜索以及由近及远的排序
Nosql学习之Redis资料(一) http://redis.io/download 目前基于LBS地理位置的搜索已经应用非常广了,的确是个很方便的东西. 我们做程序的就是要考虑如何通过这些功能,来 ...
- [资料]mysql实现地理位置搜索
mysql实现地理位置搜索 使用mysql来实现lbs(地理位置服务)功能 Mysql 地区经纬度 查询
- 使用.Net+非关系型数据库MongoDB 实现LBS商家按距离排序_按离我最近排序
.Net MongoDB LBS地理位置定位 开发过程,实现商家按距离排序 前言: 在使用美团点外卖,看电影,找好吃的时候,经常会注意到软件有一个按距离排序,找离我最近的商家,心中有一些疑问,.Net ...
- 【mongoDB高级篇①】聚集运算之group,aggregate
group 语法 db.collection.group({ key:{field:1},//按什么字段进行分组 initial:{count:0},//进行分组前变量初始化,该处声明的变量可以在以下 ...
随机推荐
- hdu 6119 …&&百度之星 T6
小小粉丝度度熊 Problem Description 度度熊喜欢着喵哈哈村的大明星——星星小姐. 为什么度度熊会喜欢星星小姐呢? 首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听. 但这都不是 ...
- WeiXin 验证成为开发者和更换服务器验证代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...
- 高级全局API钩取 - IE连接控制
@author: dlive @date: 2017/02/14 0x01 调试IE进程 常见网络连接库:ws2_32.dll(套接字),wininet.dll,winhttp.dll 使用Proce ...
- 最简单的基于FFmpeg的AVDevice例子(读取摄像头)【转】
转自:http://blog.csdn.net/leixiaohua1020/article/details/39702113 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[- ...
- 如何在Android 或Linux 下,做Suspend /Resume 的Debug【转】
转自:http://blog.csdn.net/jacobywu/article/details/24735521 目录(?)[-] Question Answer 加boot 參數 no_conso ...
- js生成一周内的日期+周几
(如有错敬请指点,以下是我工作中遇到并且解决的问题) 效果有两种: 两者区别是 1.第一天(今天)显示今日 2.第一天(今天)显示周几 (第一个图是在手机上显示的效果,第二个是PC网页上显示的效果) ...
- ef code first commad
PM> enable-migrations 已在项目“EasyWeChat.Data”中启用迁移.若要覆盖现有迁移配置,请使用 -Force 参数. PM> add-migration 位 ...
- [BZOJ1069][SCOI2007]最大土地面积 凸包+旋转卡壳
1069: [SCOI2007]最大土地面积 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 3669 Solved: 1451[Submit][Sta ...
- 我在16ASPX下了一个系统是ACCESS和VS2005做的我想把那个连接数据库的'DB_16aspx'的名字改了进不了了可是?
靠,在web.config或者其他配置文件中把数据库连接字符串改称你的新名字不就行了
- Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[2]
初级篇 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明变量 偶然的变量隐藏Accidental Variable Shado ...