导入高德地图定位功能

Unity接入高德地图 Unity调用高德地图API,获取定位信息(Android)先在Android端实现定位功能,再打包成JAR文件提供接口方法给Unity调用。Unity3D (5.3.4) Eclipse: Neon(4.6.0)Unity提供了跟Android交互的接口,可以参考雨松大大的博客。1.首先新建一个Android工程,在最小SDK版本里选4.0以上,不然在Unity打包的时候会报错。2.创建出来的工 阅读详情

定位功能已经是很多项目中都在使用的了,而且也比较简单,只要按照第三方给出的文档进行集成就可以了,起中高德的地图个人感觉是集成比较简单的了,这个定位功能也一样。、

首先,是注册一个高德账号,这个就不用说了,然后就是创建一个项目,按照要求注册sha1值,包名等。

需要注意一点,有时候你直接用电脑小黑窗弄到的sha1值是不对的,在高德地图上会返回key值有误!

public static String sHA1(Context context) {
    try {
        PackageInfo info = context.getPackageManager().getPackageInfo(
                context.getPackageName(), PackageManager.GET_SIGNATURES);
        byte[] cert = info.signatures[0].toByteArray();
        MessageDigest md = MessageDigest.getInstance("SHA1");
        byte[] publicKey = md.digest(cert);
        StringBuffer hexString = new StringBuffer();
        for (int i = 0; i < publicKey.length; i++) {
            String appendString = Integer.toHexString(0xFF & publicKey[i])
                    .toUpperCase(Locale.US);
            if (appendString.length() == 1)
                hexString.append("0");
            hexString.append(appendString);
            hexString.append(":");
        }
        String result = hexString.toString();
        return result.substring(0, result.length()-1);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return null;
}

用上面的方法,传入上下文,返回值就是一个sha1值,用这个值去申请key值就可以了。

然后,在清单文件中配置高德的key值

<!--高德地图-->
<meta-data
    android:name="com.amap.api.v2.apikey"
    android:value="你自己的key值"/>

<!--定位服务-->
<service android:name="com.amap.api.location.APSService"></service>

添加权限
<user-permission android:name="android.premission.CALL_PHONE"/>
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!--用于写入缓存数据到扩展存储卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<!--用于申请获取蓝牙信息进行室内定位-->
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>


在添加依赖

//定位
compile 'com.amap.api:location:latest.integration'

创建Application类,记得在清单文件中注册

public class MyApp extends Application {

    //声明AMapLocationClientOption对象
    public AMapLocationClientOption mLocationOption = null;
    //声明AMapLocationClient类对象
    public AMapLocationClient mLocationClient = null;
    //声明定位回调监听器
    public AMapLocationListener mLocationListener = new AMapLocationListener() {
        @Override
        public void onLocationChanged(AMapLocation aMapLocation) {

        }
    };

    @Override
    public void onCreate() {
        super.onCreate();
        //初始化定位
        mLocationClient = new AMapLocationClient(getApplicationContext());
//设置定位回调监听
        mLocationClient.setLocationListener(mLocationListener);

    }
}
注册上 Application类

然后,就可以在需要的位置进行调用了,不过现在很多手机需要动态申请权限,所以就需要加上权限判断
    //权限申请
private static final int LOCATION_CODE = 1;
private LocationManager lm;//【位置管理】
 public void quanxian(){ lm = (LocationManager) MainActivity.this.getSystemService(MainActivity.this.LOCATION_SERVICE); boolean ok = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); if (ok) {//开了定位服务 if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { Log.e("BRG","没有权限"); // 没有权限,申请权限。 // 申请授权。 ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, LOCATION_CODE);// Toast.makeText(getActivity(), "没有权限", Toast.LENGTH_SHORT).show(); } else { dingwei(); // 有权限了,去放肆吧。// Toast.makeText(getActivity(), "有权限", Toast.LENGTH_SHORT).show(); } } else { Log.e("BRG","系统检测到未开启GPS定位服务"); Toast.makeText(MainActivity.this, "系统检测到未开启GPS定位服务", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(); intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivityForResult(intent, 1315); }}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode) {
        case LOCATION_CODE: {
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // 权限被用户同意。
            dingwei();
            } else {
                // 权限被用户拒绝了。
            Toast.makeText(MainActivity.this, "定位权限被禁止,相关地图功能无法使用!",Toast.LENGTH_LONG).show();
            }
            Intent intent = new Intent(MainActivity.this, MainActivity.class);
            startActivity(intent);
            finish();
        }
    }
}
然后,就是在权限允许里面调用定位功能,
//声明mlocationClient对象
public AMapLocationClient mlocationClient;
//声明mLocationOption对象
public AMapLocationClientOption mLocationOption = null;
private void dingwei() {
    Log.e("BRG","走了定位");
    mlocationClient = new AMapLocationClient(MainActivity.this);
    //初始化定位参数
    mLocationOption = new AMapLocationClientOption();
    //设置定位监听
    mlocationClient.setLocationListener( this);
    //设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
    mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
    //设置定位间隔,单位毫秒,默认为2000ms
    mLocationOption.setInterval(20000);
    //设置是否返回地址信息(默认返回地址信息)
    mLocationOption.setNeedAddress(true);
    //设置定位参数
    mlocationClient.setLocationOption(mLocationOption);
    // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
    // 注意设置合适的定位时间的间隔(最小间隔支持为1000ms),并且在合适时间调用stopLocation()方法来取消定位请求
    // 在定位结束后,在合适的生命周期调用onDestroy()方法
    // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除
    //启动定位
    mlocationClient.startLocation();


}

重写方法,拿到地址返回值

@Override
    public void onLocationChanged(AMapLocation aMapLocation) {
        if (aMapLocation != null) {
            Log.e("BRG","返回结果"+aMapLocation.getErrorCode());
            if (aMapLocation.getErrorCode() == 0) {
//可在其中解析amapLocation获取相应内容。
                String address = aMapLocation.getAddress();
          
            }else {
                //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
                Log.e("AmapError","location Error, ErrCode:"
                        + aMapLocation.getErrorCode() + ", errInfo:"
                        + aMapLocation.getErrorInfo());
            }
        }
    }
到这里,最简单的一个定位功能就完成了,根据高德给出来的返回值列表,自己去取需要的AMapLocation内部的值吧:
http://lbs.amap.com/api/android-location-sdk/guide/android-location/getlocation


高德地图iOS SDK POI检索与快速定位实战教程 高德地图SDK是一套集成了地图显示、搜索、定位等多种功能的软件开发工具包,允许开发者在应用程序中轻松添加地图功能,实现路径规划、POI检索、实时定位等复杂服务。由于其丰富的API接口和良好的跨平台支持,SDK被广泛应用于iOS、Android以及Web端的开发。AMapSearch模块是高德地图SDK提供的一个用于检索地图信息的模块。它支持多种类型的搜索,包括地点搜索、周边检索、公交路线搜索、驾车路线搜索等。模块基本结构包括了搜索对象的创建、查询参数的配置、搜索功能的调用以及结果的处理。 阅读详情

相关推荐

高德地图与定位功能集成演示

高德地图SDK为开发者提供了丰富的API接口,能够快速在移动应用中集成地图、定位、路径规划等功能。通过集成高德地图SDK,可以使得应用具备专业级的地图服务能力,支持多种平台,包括iOS和Android。在开始集成SDK之前,确保你有一个有效的开发者账号,并已经获取到相应的权限。接下来,我们将通过以下步骤完成SDK的基本集成:下载对应平台的SDK包。将SDK包导入到你的项目中。配置必要的权限和API Key。

weixin_36019375的博客 1109

高德地图 地址解码(geocoder.getAddress) INVALID_USER_SCODE

官网上是这样说的,需要搭配安全密钥一块使用,注意,要在key值之前引用安全密钥,不然会导致key失效。正常情况下,这里的result中就包含的有地理位置信息,但是我在打印 result时,显示的是。在使用高德地图时,对经纬度进行地址位置信息解码,按照官网上的写法,然后出现了一个错误信息。这样就可以获取到result中的详细地址信息了。我是在vue中使用的,具体写法如下。在index.html文件中引入。在使用高德地图的文件中。

qq_51721168的博客 3338

ZYNQ实战:如何用AXI-stream FIFO解决跨时钟域数据同步难题(附完整代码)

本文深入探讨了在ZYNQ项目中,如何利用AXI-Stream FIFO有效解决PS与PL之间的跨时钟域数据同步难题。文章详细分析了异步FIFO的架构设计、关键配置参数,并提供了PS端软件策略与PL端逻辑设计的完整代码示例,旨在帮助开发者构建稳定可靠的数据流通道,优化系统性能。

nginx7reverse的博客 754

高德地图根据经纬度获取地址信息

主要是使用高德里面的这个方法, 根据逆向地理编码:将地理坐标(经纬度)转换成地址描述信息,对应为AMap.Geocoder的getAddress方法。 具体使用的代码为 最后看效果这是传的经纬度与解析出来的地理位置 如果需要正向解析将地理位置变成经纬度那么需要用到这个方法 操作步骤是一样的,具体可以看官网地理编码与逆地理编码

Jet_Lover的博客 1万+

Codex API 直接集成指南:告别中转代理,构建稳定高效的 AI 应用

在 AI 应用开发中,API 集成是连接模型能力与业务逻辑的核心环节。其基本原理是通过 HTTP 协议,按照服务提供商定义的规范发送请求并解析响应,实现远程调用。标准化的 API 设计确保了跨平台和跨语言的互操作性,其技术价值在于提供了稳定、可控且可扩展的服务接入方式,是构建企业级智能应用的基础。在实际应用场景中,开发者常需集成如 Codex 这类聚合了多种大语言模型的平台,以调用诸如 DeepSeek 等先进模型。然而,部分开发者仍依赖过时的第三方中转代理工具,这不仅引入了单点故障和版本锁定的风险,还可能

weixin_28224217的博客 339

闲人闲谈PS之十二——WBS-BOM在装备制造项目中的实战解析

本文深入解析了WBS-BOM在装备制造项目中的核心应用。针对按订单设计/生产的行业痛点,WBS-BOM作为项目专属物料清单,完美连接SAP PS与PP模块,确保MRP能基于项目进行精准物料需求计算,实现从设计到生产的全链路项目化跟踪与管理。

weixin_29284885的博客 399

高德地图调用getAddress方法逆向地理编码失败,status一直为error

web工作中的错误

jhf123000的博客 3258

别再只用串口助手了!用LabVIEW给STM32F103C8T6做个专属上位机(附完整源码)

本文详细介绍了如何利用LabVIEW为STM32F103C8T6开发定制化上位机,替代传统串口助手,实现高效数据交互。内容涵盖硬件架构设计、STM32固件优化、LabVIEW上位机开发技巧及工业级应用案例,特别适合需要实时数据采集与处理的工控场景。

weixin_42524762的博客 367

高德定位,高德地图实例

前几天做了个添加地址的页面,其中用到了定位和地图,先上高德的定位和地图:      效果:      进入页面后,自动定位,如果定位不成功,可以点击“重新定位”的按钮重新定位,在位置显示框里输入地址可以以下拉框的形式显示出相关的地址列表,点击其中一条,在地图上显示相应地图。地图可以拖拉,绽放。    上代码:       package com.haier.mine_wine.addre

liuye066的专栏 1969

避坑指南:将大华官方Java SDK无缝迁移到SpringBoot 2.x项目的完整流程

本文详细介绍了如何将大华官方Java SDK无缝迁移到SpringBoot 2.x项目,重点解决内存管理、连接池设计和异步处理等核心问题。通过设备连接池化、异步非阻塞接口改造和内存管理优化,实现刷卡、刷脸等认证功能的高效整合,提升Web服务的稳定性和性能。

weixin_42557830的博客 416

Mac本地大模型实战指南:Ollama+Metal+Apple Silicon深度优化

大语言模型(LLM)本地化部署正成为开发者关键技术能力,其核心在于推理效率、硬件适配与成本控制。Apple Silicon凭借统一内存架构(UMA)和Neural Engine,为本地LLM运行提供了独特优势;Metal加速则显著提升GPU计算吞吐,使Gemma 4、Qwen 3.5等模型在M系列Mac上实现低延迟、高精度、离线可用的工程落地。相比云端API,本地方案规避了token计费、网络依赖与数据外泄风险,特别适用于企业文档处理、实时语音分析、私有知识库检索等强隐私、低时延场景。本文聚焦Mac平台,系

weixin_33443333的博客 352

高德地图实现-逆地理编码-输入提示-地图标点-实现车库管理

我们将学习如何创建一个前端地图应用程序,该应用程序集成了高德地图API,允许用户进行地点搜索、选择和标记,以及执行逆地理编码以获取地址信息。我们将使用Vue.js框架来构建应用程序,并结合高德地图的功能来实现这些功能。这个方法的主要目的是将给定的经度和纬度坐标转换为地理位置信息,例如城市和格式化地址。这个方法用于执行输入提示,根据用户输入的搜索关键词获取建议的地点列表。这个模板包括一个搜索输入框、一个搜索按钮、一个建议列表和一个地图容器。在开始之前,确保你已经注册并获得了高德地图API的密钥。

咕噜咕噜wy的博客 1979

【Ranger】mac下Apache Ranger编译安装

a、编译过程中出现测试用例不通过和文件认证错误错误:带上参数-DskipTests=true -Drat.skip=true 重新编译;b、若编译过程中出现缺少jar包的情况,可能下载不了,需要手动自动添加;c、编译所需的其他工具如maven等安装配置略。采用这个会报错,因此我才用了下面一个命令。初始化设置Ranger Admin:执行。然后进入target目录。

九师兄 2103

安卓 导入高德地图 手机定位功能

第一次写安卓。。。为了大作业 只能用到什么学什么 作为初学者 深深的感受到安卓的恶意 环境sdk 都遇到不少问题 要用到地图定位 一开始先了解百度地图  各种不行 发现百度地图最新版本更新了 然后网上搜到的代码 都用不了 搞了很久  然后又尝试高德地图 又搞了很久还是不行。。。 用AndroidStudio中的虚拟机运行老是报错 提示安装不了apk 后来经别人提醒 使用手机运行 就可以了

youngkl博客 2446

Dify平台隐患url:/console/api/remote-files/upload暴露高危漏洞,配置nginx htpasswd模块认证机制屏蔽解决

内部网络探测: 攻击者可通过SSRF扫描内网服务云元数据访问: 可能访问AWS/Aliyun/腾讯云等元数据服务服务端请求伪造: 以服务器身份发起任意HTTP请求。

CN_Eden 1317

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android 使用高德地图简单实现地图定位

最近在准备考驾照科目三,今天终于结束并且成功通过了考试,比较高兴,就把最近几天的高德地图定位记录了一下,防止以后再次需要此功能模块。 1.首先,去官网注册一个高德地图的帐号,http://lbs.amap.com/,然后获取高德key,具体步骤按照官网给出的流程来,很简单,只需要注意一下android studio的sha1值获取途径比较特殊,一般通过cmd命令来查看,教程官网也有,其他这里就不

沐风的博客 4336

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

高德地图

1.权限 &amp;amp;amp;amp;amp;lt;!--允许程序打开网络套接字--&amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;lt;uses-permission android:name=&amp;amp;amp;amp;quot;android.permission.INTERNET&amp;amp;amp;amp;quot; /&amp;amp;amp;amp;amp;gt; &amp

weixin_43860442的博客 147

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

高德地图开发(一)显示地图与定位

如果地图功能随处可见,应用很广,这里利用高德地图的SDK来实现地图的显示以及定位功能。如需要详细了解参考官网信息http://lbs.amap.com/api/android-sdk/summary使用高德地图你还得需要一个key。注册一个高德地图账号,在开发者平台 进入右上角的控制台,在应用管理中新建一个应用就可以获取到key了。首先官网下载SDK包http://lbs.amap.com/api...

lhp15575865420的博客 4534

【Uniapp】高德地图的接入、定位、自定义标点与信息窗体使用

因为公司的业务需求,需要实现一个接入高德地图的数据大屏,并根据坐标实现地图标点渲染,自定义信息窗体,点击定位等功能。查阅高德地图官方文档时发现使用的是原生 JavaScript ,且网上 uniapp 接入使用的教程较少,我自己摸索之后解决了不少问题,欢迎大佬补充纠正。

Brod-Roy的博客 3万+

高德地图 Android API 的定位原理及使用方法

基站定位是根据通讯网络基站信息进行定位的方法,此定位方法需要有较丰富的基站地理信息数据支持。高德地图目前的基站数据库支持 GSM 网络和CDMA网络。 定位机制 Android 平台主要使用三个 Class 和一个 interface 访问定位功能: LocationManager 是定位的核心接口,应用程序首先调用 getSystemService,得到此类的实例,然后通过此类向系统申

api_autonavi的专栏 1万+

高德地图03---定位本地位置

首先导入高德地图依赖的jar文件,并添加权限1 xml布局文件中添加地图<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:l

shuiermengqi的专栏 2227

高德地图的定位功能的实现

1、步骤一:导入jar包 (1)在eclipse中导入jar的方式:将解压后的jar包和”armeabr”文件夹一起拷贝到libs中 (2)在Android Studio中导入的方式:jar包导入libs目录下,并进行add as library,在main下面创建一个jniLibs文件夹,然后把”armeabr”文件夹拷贝到jniLibs文件夹中,如图所示: 2、步骤二:在Androi

拼搏的少年的博客 1744

Android Studio之高德地图实现定位和3D地图显示

Android Studio之高德地图实现定位和3D地图显示 【下载地址】AndroidStudio之高德地图实现定位和3D地图显示 在Android开发中,地图功能的实现是许多应用不可或缺的一部分。本开源项目聚焦于如何在Android Studio中高效集成高德地图,实现精准定位与3D地图显示。通过详细的步骤指南,开发...

gitblog_06741的博客 574

unity3d,android平台下,高德地图定位

这里,用了一个比较偷懒的办法,直接用高德提供的android定位sdk,没有重新编译。好处是省事,坏处是,没法修改默认的定位模式。部分信息获取不到。 如果需要完整的功能,还是需要重新编译高德地图的sdk。 首先,注册高德sdk的用户,并且获取key。这里的key和编译环境的sha1相关。 新建一个unity项目 先把项目编译成android,记得Bu

wuyt2008的专栏 1万+
上一篇: Android 定位权限申请
下一篇: Android 屏幕适配
Liu_ser
博客等级 码龄9年 22粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值