Android 获取经纬度,地理位置,省市区

申请百度key:http://lbsyun.baidu.com/

 

 

1、jar包下载地址:https://pan.baidu.com/s/1J-boj0ct9oJ8YjXMR8X4KA

下载并复制到libs下,Add As Library

 

如需获取SHA1值:https://blog.csdn.net/meixi_android/article/details/72547966

2、jar包复制到libs文件下,并Add As library

3、Java代码

 

static BDLocation lastLocation = null;
private LocationClient mLocClient;
public MyLocationListenner myListener = new MyLocationListenner();//自定义方法
    public class MyLocationListenner implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {if (location == null) {return;}if (lastLocation != null) {if (lastLocation.getLatitude() == location.getLatitude() && lastLocation.getLongitude() == location.getLongitude()) {Log.d("map", "same location, skip refresh");// mMapView.refresh(); //need this refresh?return;}}String addrlg; //定位结果lastLocation = location;if (!TextUtils.isEmpty(lastLocation.getLocationDescribe())){addrlg = lastLocation.getLocationDescribe();}else if (lastLocation.hasAddr()) {addrlg = lastLocation.getAddrStr();}else {addrlg = "定位失败...";return;}
//            String city = lastLocation.getCity();double lat = lastLocation.getLatitude();double lot = lastLocation.getLongitude();ShareUtil.sharedPstring("nowla",String.valueOf(lat));ShareUtil.sharedPstring("nowlo",String.valueOf(lot));ShareUtil.sharedPstring("nowad",addrlg);Log.i("lgq","............"+addrlg+"........"+lat+"......."+lot);
//            Toast.makeText(MainActivity.this, addrlg+"........"+lat, Toast.LENGTH_SHORT).show();
//            tv_bottom_bar_me.setText(addrlg);
//            mBaiduMap.animateMapStatus(u);}}

 附:

 sb.append("\nlocType : ");// 定位类型
         sb.append(location.getLocType());
         sb.append("\nlatitude : ");// 纬度
         sb.append(location.getLatitude());
         sb.append("\nlontitude : ");// 经度
         sb.append(location.getLongitude());
         sb.append("\nradius : ");// 半径
         sb.append(location.getRadius());
         sb.append("\nCountryCode : ");// 国家码
         sb.append(location.getCountryCode());
         sb.append("\nCountry : ");// 国家名称
         sb.append(location.getCountry());
         sb.append("\ncitycode : ");// 城市编码
         sb.append(location.getCityCode());
         sb.append("\ncity : ");// 城市
         sb.append(location.getCity());
         sb.append("\nDistrict : ");// 区
         sb.append(location.getDistrict());
         sb.append("\nStreet : ");// 街道
         sb.append(location.getStreet());
         sb.append("\naddr : ");// 地址信息
         sb.append(location.getAddrStr());
         sb.append("\nDirection(not all devices have value): ");
         sb.append(location.getDirection());// 方向
         sb.append("\nlocationdescribe: ");
         sb.append(location.getLocationDescribe());// 位置语义化信息
         sb.append("\nPoi: ");// POI信息
 

private void showMapWithLocationClient() {mLocClient = new LocationClient(this);mLocClient.registerLocationListener(myListener);LocationClientOption option = new LocationClientOption();option.setOpenGps(true);// open gpsoption.setCoorType("bd09ll");//可选,默认0,即仅定位一次,设置定时发起定位请求的间隔需要大于等于1000ms才是有效的/** 定位sdk提供2种定位模式,定时定位和app主动请求定位。* setScanSpan < 1000 则为 app主动请求定位;* setScanSpan >=1000,则为定时定位模式(setScanSpan的值就是定时定位的时间间隔))* 定时定位模式中,定位sdk会按照app设定的时间定位进行位置更新,定时回调定位结果。此种定位模式适用于希望获得连续定位结果的情况。* 对于单次定位类应用,或者偶尔需要一下位置信息的app,可采用app主动请求定位这种模式。*///option.setScanSpan(2000);//可选,设置是否需要地址信息,默认不需要option.setIsNeedAddress(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”option.setIsNeedLocationDescribe(true);//设置是否需要返回位置POI信息,可以在BDLocation.getPoiList()中得到数据option.setIsNeedLocationPoiList(true);//在网络定位时,是否需要设备方向 true:需要 ; false:不需要option.setNeedDeviceDirect(true);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死option.setIgnoreKillProcess(false);//可选,默认false,设置是否收集CRASH信息,默认收集option.SetIgnoreCacheException(false);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要option.setEnableSimulateGps(false);option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);mLocClient.setLocOption(option);mLocClient.start();
}

4、运行

 

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);showMapWithLocationClient();
}

权限

 

<uses-permission android:name="android.permission.ACCESS_GPS" />
<!-- 获取精确gps位置 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 获取粗略位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 允许程序访问额外的定位提供者指令获取模拟定位信息 -->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!-- 网络链接 -->
<uses-permission android:name="android.permission.INTERNET" />

 6.0以上版本获取权限:https://blog.csdn.net/meixi_android/article/details/82114026

 

配置百度服务到manifest

<serviceandroid:name="com.baidu.location.f" android:enabled="true"android:process=":remote">
</service>

配置key

<meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="qn3ZT2xT7yDgbIgkaPooGpDdMjziASZj" />

 

 

谷歌API也可以实现啦:https://blog.csdn.net/meixi_android/article/details/84955589

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP中的__get()和__set()方法获取设置私有属性

在类的封装中&#xff0c;获取属性可以自定义getXXX()和setXXX()方法&#xff0c;当一个类中有多个属性时&#xff0c;使用这种方式就会很麻烦。为此PHP5中预定义了__get()和__set()方法&#xff0c;其中__get()方法用于获取私有成员属性值&#xff0c;__set()方法用于为私有成…

前端学习(2618):vue插槽--默认插槽

插槽就是子组件中的提供给父组件使用的一个占位符&#xff0c;用<slot></slot> 表示&#xff0c;父组件可以在这个占位符中填充任何模板代码&#xff0c;如 HTML、组件等&#xff0c;填充的内容会替换子组件的<slot></slot>标签。 如下代码&#xff1…

前端学习(2619):vue插槽--具名插槽

插槽的最最简单使用&#xff0c;上面已有例子&#xff0c;这里就不写了&#xff0c;接下来看看&#xff0c;插槽其他使用场景 插槽的使用 - 具名插槽 描述&#xff1a;具名插槽其实就是给插槽娶个名字。一个子组件可以放多个插槽&#xff0c;而且可以放在不同的地方&#xff…

工作119:axios请求封装

/*封装系统需要的post请求 第一个参数传入url地址 第二个传入数据参数*/ export function postAction(url, parameter) {return axios({url: url,method: "post",data: parameter}); } /*封装系统需要的put请求*/ export function putAction(url, parameter) {return…

[UVA 10891] Game of Sum

图片加载可能有点慢&#xff0c;请跳过题面先看题解&#xff0c;谢谢 很容易想到这样一个状态&#xff1a;\(dp[l][r]\) 表示&#xff0c;\(l\) 到 \(r\) 这一段区间&#xff0c;双方都使用最优策略时&#xff0c;先手能得到的最大分数 $ $ 那么这个只要怎么求呢&#xff0c;想…

1 微信公众号开发 服务器配置 有什么用

启用并设置服务器配置后&#xff0c;用户发给公众号的消息以及开发者需要的事件推送&#xff0c;将被微信转发到该URL中。 换句话说&#xff0c;开发者需要监听这个URL&#xff0c;处理数据&#xff0c;并做出反应。

svn在linux下的使用(转)

svn在linux下的使用(转)ubuntu命令行模式操作svn 首先要安装SVN客户端到你的系统才能操作各种命令 apt-get install subversion 1、将文件checkout到本地目录 svn checkout path&#xff08;path是服务器上的目录&#xff09; 例如&#xff1a;svn checkout svn://192.168.1.1…

2 微信公众号开发 服务器配置 Token验证

服务器配置的主要难点就是Token验证。 官方文档&#xff1a;https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1445241432 接入指南&#xff1a;https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1421135319 用户服务器端主要需要做的工作&#xff0c;…

前端学习(2623):Vuex初步识别

Vuex 是什么&#xff1f; Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension (opens new window)&#x…

3 微信公众号开发 接受普通消息

用户如果在公众号发送内容&#xff0c;微信服务器会把消息转发到我们到服务器上&#xff0c;我们需要及时做出处理&#xff0c;给用户反馈。 文档地址&#xff1a;https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1421140453 例如&#xff0c;在微信公众号发送消…

Linux 查看系统硬件信息

Linux 查看系统硬件信息(实例详解)linux查看系统的硬件信息&#xff0c;并不像windows那么直观&#xff0c;这里我罗列了查看系统信息的实用命令&#xff0c;并做了分类&#xff0c;实例解说。 cpu lscpu命令&#xff0c;查看的是cpu的统计信息. blueblue-pc:~$ lscpu Archit…

简易表格编辑器

SMMS有个建表工具,尝试使用HTML模仿出一个简单的做为练习. 截图: 一.实现SMMS建表工具的操作 点击单元格,进入编辑状态.按TAB切换单元格按方向箭切换单元格按空格设定取消主键列二.实现思路: 1.DOM结构使用div(行)span(列) <div><span></span><span>&l…

Android 向右滑返回,退出当前activity

demo链接&#xff1a;https://download.csdn.net/download/meixi_android/10826597 实现效果: 纯原生类实现方法&#xff1a; 1、自定义侧滑基类SwipeBackActivity public class SwipeBackActivity extends FragmentActivity implements SwipeBackActivityBase {private Swi…

4 微信公众号开发 被动回复消息 回复没有反应怎么办

接收到用户的消息&#xff0c;我们需要做出反馈。 文档地址&#xff1a;https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1421140543 官方返回的数据格式是xml&#xff0c;我们需要转化为json。获取数据&#xff0c;构造xml在返回就OK了。 核心代码&#xff1a; …

Linux系统的远程登录

Linux大多应用于服务器&#xff0c;而服务器不可能像PC一样放在办公室&#xff0c;它们是放在IDC机房的&#xff0c;所以我平时登录linux系统都是通过远程登录的。Linux系统中是通过ssh服务实现的远程登录功能。默认ssh服务开启了22端口&#xff0c;而且当我们安装完系统时&…

更新——Canvas画布动画效果之实现倒计时

Hello&#xff0c;大家好&#xff01; 小W复活啦&#xff01;继续欢乐的给大家更博&#xff0c;输送新知识~~ 不开玩笑啦&#xff01;秒进正题~~~ 上次更博&#xff0c;小W给大家介绍了Canvas画布的基础部分&#xff0c;以及实现了一个由7*10点阵图显示的倒计时的基本架构。 上…

5 微信公众号开发 获取 access_token

在使用微信公众号接口中&#xff0c;需要access_token。access_token是公众号的全局唯一凭证。可以理解为我们服务器的身份证。 总结以上说明&#xff0c;access_token需要做到以下两点&#xff1a; 1.因为access_token有2个小时的时效性&#xff0c;要有一个机制保证最长2个…