如何获取到经纬度和位置
来源:互联网 发布:淘宝买衣服靠谱吗 编辑:程序博客网 时间:2024/05/29 18:02
</pre><p>这个文档有一个button,点击了之后直接在TextView里显示出经纬度和物理位置,不通过开启百度地图之类的来得到,所有的到的方法全部在后台运行</p><p></p><p>先给Mainfest里面添加各种百度地图的权限和key码</p><p><pre name="code" class="html"> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
</pre><pre name="code" class="html"><meta-data android:name="com.baidu.lbsapi.API_KEY" android:value=" 你自己的key码 " />
然后记得添加上定位的服务
<service<span style="white-space:pre"></span>android:name="com.baidu.location.f"<span style="white-space:pre"></span>android:enabled="true"<span style="white-space:pre"></span>android:permission="android.permission.BAIDU_LOCATION_SERVICE"<span style="white-space:pre"></span>android:process=":remote" ></service>
在java文件里点击了按钮之后会调用封装的方法
case R.id.location_imageButton_location:hashMap = LocationUtils.getlocation(LocationActivity.this);latitude = (String) hashMap.get("latitude");longitude = (String) hashMap.get("longitude");address = (String) hashMap.get("address");errorcode = (String) hashMap.get("errorcode");
<span style="white-space: pre;"></span>//因为百度地图获取的时候errorcode会出现很多不同的错误,所以用if else来判断一下,给用户更好的体验
if("161".equals(errorcode)){location_textView_location.setText(address);//显示物理地址}else if("68".equals(errorcode)){location_textView_location.setText("网络连接失败,请稍等后点击");}else if("65".equals(errorcode)){location_textView_location.setText("定位缓存的结果");}else if("162".equals(errorcode) || "163".equals(errorcode) || "164".equals(errorcode) || "165".equals(errorcode) || "166".equals(errorcode) || "167".equals(errorcode)){location_textView_location.setText("服务端定位失败,请稍等后点击");}else{location_textView_location.setText("网络不稳定,请稍等后点击");}//显示经纬度textView1.setText(longitude);textView2.setText(latitude);break;
我用的是一个HashMap,得到经纬度和地址之后存入键值对,然后再返还出去,在调用的地方得到hashMap然后再把经纬度和地址取出来
import java.util.HashMap;import android.content.Context;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationConfiguration;import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode;public class LocationUtils {private static final String TAG = "LocationUtils";private static LocationClient mLocClient;public double mCurrentLatitude;public double mCurrentLongtitude;private static String latitude;private static String longitude;private static String address;private static String errorcode;private static BaiduMap mBaiduMap;public static HashMap<String, Object> getlocation(final Context context){HashMap<String,Object> hashMap = new HashMap<String, Object>();MapView mMapView = new MapView(context);mBaiduMap = mMapView.getMap(); // 开启定位图层 mBaiduMap.setMyLocationEnabled(true); mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(LocationMode.NORMAL, true, null));// 定位初始化 mLocClient = new LocationClient(context); LocationClientOption option = new LocationClientOption(); option.setOpenGps(true);// 打开gps option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);// 设置定位模式option.setAddrType("detail");option.setCoorType("gcj02"); // 设置坐标类型 option.setIsNeedAddress(true);option.setAddrType("all");option.setScanSpan(500); option.setIsNeedAddress(true); // 返回的定位结果包含地址信息option.setNeedDeviceDirect(true);//包含机头方向mLocClient.setLocOption(option); mLocClient.start();//注册位置监听器mLocClient.registerLocationListener(new BDLocationListener() {@Overridepublic void onReceiveLocation(BDLocation location) {if (location == null) {return;}StringBuffer sb1 = new StringBuffer(64);StringBuffer sb2 = new StringBuffer(64);StringBuffer sb3 = new StringBuffer(64);StringBuffer sb4 = new StringBuffer(64);sb1.append(location.getLatitude());//纬度sb2.append(location.getLongitude());//经度sb3.append(location.getAddrStr());//地址sb4.append(location.getLocType());//错误码latitude = sb1.toString().trim();longitude = sb2.toString().trim();address = sb3.toString().trim();errorcode = sb4.toString().trim();}});if (mLocClient.isStarted()) {mLocClient.stop();}else {mLocClient.start();}hashMap.put("latitude", latitude);hashMap.put("longitude", longitude);hashMap.put("address", address);hashMap.put("errorcode", errorcode);return hashMap;}}
地址得到了,因为公司的原因,我马赛克了一下,,,
这个封装的方法有时候网慢或者是流量的话会获取不到,errorcode为62或者别的
0 0
- 如何获取到经纬度和位置
- 百度地图获取经纬度和当前精确位置名称
- 通过经纬度获取中心位置和缩放级别
- Android 如何获取经纬度
- Android 如何获取经纬度
- Android 如何获取经纬度
- Android 如何获取经纬度
- Android 如何获取手机经纬度和地理位置信息
- 如何使用百度地图API自动获取地址和经纬度
- 根据经纬度获取当地的位置
- Android定位获取经纬度并显示位置
- 百度api获取经纬度及详细位置
- iOS定位获取经纬度以及计算位置
- iOS根据输入的位置获取经纬度
- Android之获取网络位置的经纬度
- 手机定位:获取我的位置经纬度
- Android中如何获取经纬度
- iOS 高德地图设置中心点,获取中心点的详细位置和经纬度
- 探索Lua5.2内部实现:Garbage Collection(1)
- PLSQL Developer在未安装Client情况下连接
- ORA-00214 控制文件版本不一致恢复过程
- vi常用命令
- 矩阵的转置
- 如何获取到经纬度和位置
- 程怀亮(
- 【BZOJ】【P1361】【Wc2004】【孪生项链】【题解】【Lyndon Word+构造】
- 把二元查找树转变成排序的双向链表
- 程咬金
- 最近负责的一些东西,编程就是有点累而已
- 子序列个数
- Velocity教程
- maven构建hibernate框架