Android通过地址反查经纬度——原生位置信息

2024-09-03 15:08

本文主要是介绍Android通过地址反查经纬度——原生位置信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android通过地址反查经纬度——原生位置信息

通过地址反查经纬度,得到的经纬度是基于火星坐标系GCJ02LL的经纬度,如果使用百度定位sdk,则需要转化为bd09LL的坐标系。

Geocoder gc = new Geocoder(MapFragment.this.getActivity(), Locale.CHINA);
List<Address> addresseList = null;
try {addresseList = gc.getFromLocationName(voiceQueryText, 1);if(addresseList!=null&&addresseList.size()>0){Address address_temp = result.get(0);double lat = address_temp.getLatitude();double lon = address_temp.getLongitude();//火星坐标系转化为百度坐标系CoordGCJ02LL2BDLL gcj02ll2bdll = new CoordGCJ02LL2BDLL();double coord[] = gcj02ll2bdll.convert(lon, lat);Log.d("经纬度","lon="+coord[0]+";lat="+coord[1]);}
} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();
}

火星坐标系转化为百度坐标系

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class CoordGCJ02LL2BDLL{public CoordGCJ02LL2BDLL(){//cn/com/XXX/XXX/XXX/此为CoordGCJ02LL2BDLL所在包名logger = LogFactory.getLog(cn/com/XXX/XXX/XXX/CoordGCJ02LL2BDLL);}public double[] convert(double gcjlon, double gcjlat){try{double bdlonlat[] = gcj2bd(gcjlat, gcjlon);logger.debug((new StringBuilder()).append("GCJ02\u7ECF\u7EAC\u5EA6\u8F6C\u767E\u5EA6\u7ECF\u7EAC\u5EA6\uFF0C\u8F93\u5165\uFF1Agcj02lon=").append(gcjlon).append(" ,gcj02lat=").append(gcjlat).append(",\u7ED3\u679C\uFF1ABaiduLon=").append(bdlonlat[1]).append(",BaiduLat=").append(bdlonlat[0]).toString());return (new double[] {bdlonlat[1], bdlonlat[0]});}catch(Exception e){return (new double[] {-1D, -1D});}}public static double[] gcj2bd(double lat, double lon){double x = lon;double y = lat;double z = Math.sqrt(x * x + y * y) + 2.0000000000000002E-005D * Math.sin(y * x_pi);double theta = Math.atan2(y, x) + 3.0000000000000001E-006D * Math.cos(x * x_pi);double bd_lon = z * Math.cos(theta) + 0.0064999999999999997D;double bd_lat = z * Math.sin(theta) + 0.0060000000000000001D;return (new double[] {bd_lat, bd_lon});}
}

这篇关于Android通过地址反查经纬度——原生位置信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

PyCharm如何更改缓存位置

《PyCharm如何更改缓存位置》:本文主要介绍PyCharm如何更改缓存位置的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm更改缓存位置1.打开PyCharm的安装编程目录2.将config、sjsystem、plugins和log的路径

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结

go rate 原生标准限速库的使用

《gorate原生标准限速库的使用》本文主要介绍了Go标准库golang.org/x/time/rate实现限流,采用令牌桶算法控制请求速率,提供Allow/Reserve/Wait方法,具有一定... 目录介绍安装API介绍rate.NewLimiter:创建限流器limiter.Allow():请求是否

Java计算经纬度距离的示例代码

《Java计算经纬度距离的示例代码》在Java中计算两个经纬度之间的距离,可以使用多种方法(代码示例均返回米为单位),文中整理了常用的5种方法,感兴趣的小伙伴可以了解一下... 目录1. Haversine公式(中等精度,推荐通用场景)2. 球面余弦定理(简单但精度较低)3. Vincenty公式(高精度,

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

springboot实现配置文件关键信息加解密

《springboot实现配置文件关键信息加解密》在项目配置文件中常常会配置如数据库连接信息,redis连接信息等,连接密码明文配置在配置文件中会很不安全,所以本文就来聊聊如何使用springboot... 目录前言方案实践1、第一种方案2、第二种方案前言在项目配置文件中常常会配置如数据库连接信息、Red