IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android 跳转到第三方地图App实现方案,目标地点定位、地点附近关键字搜索 -> 正文阅读

[移动开发]Android 跳转到第三方地图App实现方案,目标地点定位、地点附近关键字搜索

Android 跳转到第三方地图App实现方案,目标地点定位、地点附近关键字搜索

方案

Android 跳转到第三方地图App实现方案

Android 跳转到高德地图、腾讯地图、百度地图。

跳转到第三方地图目标地点定位、目标地点附近关键字搜索

官方链接

高德地图:https://lbs.amap.com/api/amap-mobile/guide/android/route

腾讯地图:https://lbs.qq.com/uri_v1/guide-mobile-navAndRoute.html

百度地图:http://lbsyun.baidu.com/index.php?title=uri/api/ios&qq-pf-to=pcqq.c2c

代码

/**
 * Created by zGui on 2022/7/13.
 * 跳转到第三方地图定位处理类
 */
class NavigationUtils {
    companion object {
        val JUMP_GAO_DE = "JUMP_GAO_DE"
        val JUMP_TEN_XUN = "JUMP_TEN_XUN"
        val JUMP_BAI_DU = "JUMP_BAI_DU"
        private val PACKAGE_GAO_DE = "com.autonavi.minimap"  //高德包名
        private val PACKAGE_TEN_XUN = "com.tencent.map"   //腾讯包名
        private val PACKAGE_BAI_DU = "com.baidu.BaiduMap"   //百度包名

        private val TYPE_AROUND = false  //true周边类型 false导航类型

        /**
         * 跳转地图App
         * type 高德/腾讯/百度
         * lat 目标纬度
         * lon 目标经度
         * poiname 目标名称
         * keyWords TYPE_AROUND = true时,搜索目标附近的关键字
         */
        @JvmStatic
        fun jumpNavigation(context: Context, type: String, lat: String, lon: String, poiname: String) {
            try {
                val intent = Intent()
                when (type) {
                    JUMP_GAO_DE -> {
                        if (isInstall(PACKAGE_GAO_DE)) {
                            if (TYPE_AROUND) {
                                val keyWords = "美食"
                                intent.data =
                                    Uri.parse("androidamap://arroundpoi?sourceApplication=my&keywords=$keyWords&lat=$lat&lon=$lon&dev=0");
                            } else {
                                intent.data =
                                    Uri.parse("androidamap://viewMap?sourceApplication=my&poiname=$poiname&lat=$lat&lon=$lon&dev=0")
                            }
                            context.startActivity(intent)
                        } else {
                            goToMarket(context, PACKAGE_GAO_DE)
                        }
                    }
                    JUMP_TEN_XUN -> {
                        if (isInstall(PACKAGE_TEN_XUN)) {
                            if (TYPE_AROUND) {
                                val keyWords = "篮球场"
                                intent.data =
                                    Uri.parse("qqmap://map/nearby?coord:$lat,$lon;placeName=$keyWords&radius=5000&referer=myapp")
                            } else {
                                intent.data =
                                    Uri.parse("qqmap://map/marker?marker=coord:$lat,$lon;title:$poiname;addr: &referer=myapp")
                            }
                            context.startActivity(intent)
                        } else {
                            goToMarket(context, PACKAGE_TEN_XUN)
                        }
                    }
                    JUMP_BAI_DU -> {
                        if (isInstall(PACKAGE_BAI_DU)) {
                            if (TYPE_AROUND) {
                                val keyWords = "公园"
                                intent.data =  Uri.parse("baidumap://map/place/nearby?query=$keyWords&center=$lat,$lon&radius=1000")
                            } else {
                                intent.data =
                                    Uri.parse("baidumap://map/marker?location=$lat,$lon&title=$poiname&content=&traffic=on")
                            }
                            context.startActivity(intent)
                        } else {
                            goToMarket(context, PACKAGE_BAI_DU)
                        }
                    }
                }
            } catch (e: Exception) {
                TLog.e("openNavigation: ", e.toString());
                ToastUtils.showShort("请检查是否开启定位权限");
            }
        }


        /**
         * 判断是否安装应用
         */
        private fun isInstall(packageName: String): Boolean {
            /**
             * targetSdkVersion >= 29(Android 11)会强制分区,
             * 默认情况应用外部存储可见性将被过滤,应用需要对分区存储进行适配。
             */
            return File("/data/data/$packageName").exists()
                    || File("storage/emulated/0/Android/data/$packageName").exists()
        }


        /**
         * 去APP市场下载
         */
        private fun goToMarket(context: Context, packageName: String) {
            try {
                val uri: Uri = Uri.parse("market://details?id=$packageName")
                val goToMarket = Intent(Intent.ACTION_VIEW, uri)
                context.startActivity(goToMarket)
            } catch (e: ActivityNotFoundException) {
            }
        }

    }
}

写在最后

此文章为个人开发时记录,有时时间有限,无法深入研究,若看到此文章后有其他见解或解决方式,欢迎留言交流👇👇👇

————————————————
版权声明:转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44158429/article/details/125780430

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:34:46  更:2022-07-17 16:36:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 3:19:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码