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()方法用于为私有成…

node 遍历读取制定后缀文件名

我的需求就是读取指定文件夹中&#xff0c;后缀为.js的文件。有两种方法解决。 1、不依赖插件&#xff1a; import * as fs from fs; import * as Path from path; const files fs.readdirSync(__dirname).filter(function (file) {return Path.extname(file).toLowerCase() …

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

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

有关禅道的学习记录

最近公司准备重新搭一个项目管理平台&#xff0c;上网搜了都推荐禅道 &#xff0c;立该找到官网先学习一下&#xff0c; 官网: http://www.zentao.net 首先来看看安装吧&#xff0c; 下载地址是 http://www.zentao.net/download/79918.html这个&#xff0c;不会用&…

Android 自动检测更新,自动下载apk更新版本

注意&#xff1a;华为手机需要先上架华为应用市场才可以自动更新apk。其他手机可能也需要先上架 关于安卓8.0不显示下载通知问题&#xff1a;https://blog.csdn.net/meixi_android/article/details/83379335 适配安卓10.0关于安卓8.0不能自动安装问题&#xff1a;https://blog…

typescript 接口 interface 的理解

在学习typescript的时候&#xff0c;经常发现别人写了好多接口&#xff08;interface&#xff09;&#xff0c;那问题来了&#xff0c;我们自己写代码&#xff0c;应该在什么情况下写接口才比较合适呢。于是我就找了找资料&#xff0c;整理一下。 接口运行时的影响为 0。TypeS…

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

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

程序的灵魂-----算法

一个程序应包括以下两方面的内容&#xff1a; 1、 转载于:https://www.cnblogs.com/lzhn/p/7650689.html

禅道学习笔记

项目部老大&#xff0c;要经常汇总&#xff0c;这时需要查看所有创建的项目和任务&#xff0c;要怎么操作 &#xff1f;&#xff1f;答&#xff1a;可以设置为超级管理员 如何成为超级管理员 禅道系统里面的权限可以通过组织视图里面的权限分组来获得&#xff0c;但其实禅道…

工作119:axios请求封装

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

10-3的随笔继续讲,演绎“圆弧底”

姚振华运作万科a&#xff0c;因为总总原因&#xff0c;姚振华变成了明庄&#xff0c;引起了王石的反抗&#xff0c;强行停牌。去看一下万科A前后的走势&#xff0c;停牌前正是姚振华节节进攻连续封板的时候&#xff0c;停牌六个月期间大盘血崩&#xff0c;所有人都知道姚振华在…

hapi常用插件(持续更新)

catbox 缓存 官方地址 https://hapijs.com/tutorials/caching?langen_US good 进程监控

md5 MD5加密

应用/*** 利用MD5进行加密** param str 待加密的字符串* return 加密后的字符串* throws NoSuchAlgorithmException 没有这种产生消息摘要的算法* throws UnsupportedEncodingException*/public String EncoderByMd5(String str) throws NoSuchAlgorithmException, Unsuppo…

[UVA 10891] Game of Sum

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

hapi 插件注册 核心代码

准备给自己的hapi框架加上微信开发库这样的插件&#xff0c;需要弄懂hapi如何注册插件、如何给插件传递参数。 1、定义插件 const Pkg require(../package.json) async function register(server, pluginOptions) {console.log(这是一个插件);console.log(这是插件参数);cons…

工作120:富文本组件封装

<template lang"html"><div class"editor"><!--定义的为表头的属性--><div ref"toolbar" class"toolbar"></div><!--定义的为表格的属性--><div ref"editor" class"text"…

mysql 常用命令与备份恢复 整理

常用命令 编辑1:使用SHOW语句找出在服务器上当前存在什么数据库&#xff1a;mysql> SHOW DATABASES;2:2、创建一个数据库MYSQLDATAmysql> CREATE DATABASE MYSQLDATA;3:选择你所创建的数据库mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功&…

/lib/libcrypto.so“ not found,is 32-bit instead of 64-bit

关于百度导航与百度云推送冲突 只需要加入红色部分 defaultConfig {applicationId "com.tianxin.mient.leapp"minSdkVersion 15targetSdkVersion 27versionCode 19versionName "19.0"// multiDexEnabled truejavaCompileOptions {annotationProces…

运用Zabbix实现内网服务器状态及局域网状况监控(2) —— 环境配置

一、基本要求 Zabbix支持如下操作系统&#xff1a; LinuxIBM AIXFreeBSDNetBSDOpenBSDHP-UXMac OS XSolarisWindows: 2000, Server 2003, XP, Vista, Server 2008, 7, 8, Server 2012 (只能跑 Zabbix agent) 软件需要&#xff1a; 数据库 MySQL&#xff1a; 5.0.3 或者以上&am…

lodash 常用的方法总结(持续更新)

lodash的引入 var _ require(lodash);castArray _.castArray将一个值铸造为数组如果它不是数组类型。 _.castArray(1); // > [1]_.castArray({ a: 1 }); // > [{ a: 1 }]_.castArray(abc); // > [abc]_.castArray(null); // > [null]_.castArray(undefined); //…