第三方地图的跳转

最近做了一个使用地图比较多的一个景区类的app,之后我就写一些我在这个APP中涉及的一些地图(高德API)方面的相关知识做一个记录。


import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;import cn.xmzt.www.utils.ToastUtils;import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;import static com.blankj.utilcode.util.ActivityUtils.startActivity;/*** 第三方地图跳转*/
public class ThirdPartyMapsGuide {public static final String PN_GAODE_MAP = "com.autonavi.minimap";// 高德地图包名public static final String PN_BAIDU_MAP = "com.baidu.BaiduMap"; // 百度地图包名public static final String PN_TENCENT_MAP = "com.tencent.map"; // 腾讯地图包名/*** 启动百度App进行导航** @param address 目的地* @param lat     必填 纬度* @param lon     必填 经度*/public static void goToBaiduActivity(Context context, String address, double lon, double lat) {double[] doubles = gcj02_To_Bd09(lon, lat);//启动路径规划页面baiduMap(context,doubles[0],doubles[1]);}/*** 百度地图*/public static void baiduMap(Context context,double lng,double lat) {if (isAvilible(context, PN_BAIDU_MAP)) {//传入指定应用包名Intent il = new Intent();il.setData(Uri.parse("baidumap://map/direction?destination=" + lat + "," + lng + "&mode=driving"));startActivity(il);} else {//未安装//market为路径,id为包名//显示手机上所有的market商店ToastUtils.showText(context, "您尚未安装百度地图");//显示手机上所有的market商店Uri uri = Uri.parse("market://details?id="+PN_BAIDU_MAP);Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);}}/*** 腾讯地图*/public static void goToTencentMap(Context context,String address,double lng,double lat) {Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.addCategory(Intent.CATEGORY_DEFAULT);//将功能Scheme以URI的方式传入dataUri uri = Uri.parse("qqmap://map/routeplan?type=drive&to="+address+"&tocoord=" + lat + "," + lng);intent.setData(uri);if (intent.resolveActivity(context.getPackageManager()) != null) {//启动该页面即可startActivity(intent);} else {ToastUtils.showText(context, "您尚未安装腾讯地图");//显示手机上所有的market商店Uri uri1 = Uri.parse("market://details?id="+PN_TENCENT_MAP);Intent intent1 = new Intent(Intent.ACTION_VIEW, uri1);startActivity(intent1);}}/*** 高德地图*/public static void goToGaoDeMap(Context context,double lng,double lat) {if (isAvilible(context, PN_GAODE_MAP)) {//传入指定应用包名Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.addCategory(Intent.CATEGORY_DEFAULT);intent.setPackage(PN_GAODE_MAP);try {intent = Intent.getIntent("amapuri://route/plan/?dlat=" + lat + "&dlon=" + lng + "&d&dev=0&t=0");startActivity(intent);} catch (URISyntaxException e) {e.printStackTrace();}} else {//未安装//market为路径,id为包名//显示手机上所有的market商店ToastUtils.showText(context, "您尚未安装高德地图");Uri uri = Uri.parse("market://details?id="+PN_GAODE_MAP);Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);}}/**检测应用是否安装*/private static boolean isAvilible(Context context, String packageName) {final PackageManager packageManager = context.getPackageManager();//获取packagemanagerList<PackageInfo> pinfo = packageManager.getInstalledPackages(0);//获取所有已安装程序的包信息List<String> pName = new ArrayList<String>();//用于存储所有已安装程序的包名//从pinfo中将包名字逐一取出,压入pName list中if (pinfo != null) {for (int i = 0; i < pinfo.size(); i++) {String pn = pinfo.get(i).packageName;pName.add(pn);}}return pName.contains(packageName);//判断pName中是否有目标程序的包名,有TRUE,没有FALSE}/*** 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 将 GCJ-02 坐标转换成 BD-09 坐标** @param lat* @param lon*/public static double[] gcj02_To_Bd09(double lat, double lon) {double x = lon, y = lat;double z = Math.sqrt(x * x + y * y) + 0.00002;double theta = Math.atan2(y, x) + 0.000003;double tempLat = z * Math.sin(theta) + 0.006;double tempLon = z * Math.cos(theta) + 0.0065;double[] gps = {tempLat, tempLon};return gps;}
}

上面的代码主要是在自己的app里面知道地址,但是没有做导航的处理,这个时候就需要使用到第三方地图的软件。我的app里面导航设计了三种高德地图,百度地图,腾讯地图。

这个是选择之前界面ui的显示情况。

点击不同的选项做出不同的跳转。

高德地图:ThirdPartyMapsGuide.goToGaoDeMap(mContext, mInfo.getLonLat().getLongitude(), mInfo.getLonLat().getLatitude());这个方法是直接判断手机中有无安装高德地图的apk,如果安装就直接打开高德地图的导航界面。如果没有安装就跳转到商店,用户可以做下载高德地图apk的操作。

百度地图:`ThirdPartyMapsGuide.goToBaiduActivity(mContext, mInfo.getScenicAddress(), mInfo.getLonLat().getLongitude(), mInfo.getLonLat().getLatitude());

腾讯地图:ThirdPartyMapsGuide.goToTencentMap(mContext, mInfo.getScenicAddress(), mInfo.getLonLat().getLongitude(), mInfo.getLonLat().getLatitude());

百度地图和腾讯地图方法里面就跟高德地图里面的理论是一样的。

Android 第三方地图跳转相关推荐

  1. Android 第三方应用跳转到qq进行聊天(qq咨询)

     最近项目有个在线咨询功能,需要跳转到qq进行qq咨询,可以从第三方应用跳转到QQ界面,并可以进入指定的QQ号码的聊天界面(可以是陌生人的QQ号). 代码如下: final String qqUr ...

  2. Android 打开第三方地图App进行导航

    Ⅰ.前言 接到产品新需求,模仿高德地图APP通过搜索关键词,在地图标识附近区域内 "关键词"所搜到的点,地图和列表之间有抽屉似的效果,具体的看下面效果图.而打开第三方地图APP进行 ...

  3. JS跳转到第三方地图APP

    最近的一个项目需求中需要让我们的手机网页跳到第三方地图APP进行导航,开发完之后进行一下整理归纳.整理思路是根据不同地图APP来进行.并分为IOS端和Android端. 地图跳转的核心思路是通过URL ...

  4. uniapp跳转第三方地图导航

    1.uniapp小程序中跳转第三方地图 address: function(item) {const address = item.address;const latitude = Number(it ...

  5. react-native 调用原生module跳转第三方地图软件实现导航功能

    之前做过android地图开发,在自己的APP里集成第三方的地图sdk(百度,高德,腾讯,搜狗等),来实现导航,基于LBS周边搜索,定位,路线规划等功能需求,这种方法比较麻烦.同时还增加了app的体积 ...

  6. uniapp实现 APP跳转到第三方地图,传经纬度和名字(安卓和ios)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.Uniapp(安卓.ios)跳转第三方地图 二.使用步骤 1.ios添加白名单 2.代码实现 总结 前言 提示:这 ...

  7. android 调起第三方地图并添加标注

    在地图应用相关的开发中,经常会应用到打开第三方地图应用,并在打开的地图上显示标注信息,本文将具体说明目前国内三大地图:百度地图.高德地图.腾讯地图的具体实现效果.先看下本文中效果在美团 本文实现的主要 ...

  8. ios ionic3 跳转第三方地图 xcode加入白名单

    之前我有篇随笔讲的是ionic3应用内跳转第三方地图应用的方法 忘了记录在ios内是需要把你用到的第三方地图应用加入跳转URL白名单内的 第三个是高德地图 iosamap 第四个是百度地图 baidu ...

  9. android中一些能在国外使用的第三方地图

    前段时间由于公司项目原因,需要做一些国外的地图功能,尝试了百度地图和高德地图后发现效果不理想,基本没有国外的详细图层(截止到2013年底,最新的没有去关注). 于是去找了android上可用的国外第三 ...

最新文章

  1. 从RNN一步步通俗易懂T理解LSTM
  2. Spring和SpringMVC的总结
  3. Android的网络Http判断是否连接服务器
  4. L2-006 树的遍历
  5. 事务的特性和隔离级别
  6. thinkphp框架环境部署
  7. 小米android11账号补丁,小米9 MIUI11 解账户锁 可登小米账号 永不反锁 完美ROOT 解锁包...
  8. 计算机中word音乐符号在哪里找,word音乐符号怎么打
  9. 三边定位算法 matlab,三边测量法的MATLAB定位程序说明.doc
  10. Android应用帧率--FPS测试
  11. HTML期末大作业~海贼王大学生HTML网页制作10个页面作品(HTML+CSS+JavaScript)
  12. X射线检测系统市场现状及未来发展趋势
  13. Java实现局域网流量监控
  14. 塞班系统更新服务器,塞班系统还在更新?网友:我把N8从抽屉里拿了出来
  15. 合作式智能运输系统车路协同云控系统V2X设备接入技术规范
  16. STM32控制步进电机运三种方式控制源码详解:主从定时器+编码器闭环+GPIO模拟(基于【TB6600】【DRV8825】驱动器)
  17. [Android]Android P(9) WIFI学习笔记 - HAL (1)
  18. 2022中央财经大学《901C语言程序设计》考研编程题回忆版
  19. 运行项目页面显示“该网页无法正常运作”的解决办法 - 前端篇
  20. Linux-Ubuntu 和 安装 genymotion 的一些问题和一些命令

热门文章

  1. 洛谷 P3797 妖梦斩木棒
  2. BUUCTF Web [BSidesCF 2020]Had a bad day1
  3. linux 开启PHP服务
  4. 伯努利随机序列 matlab,Bernoullibin-随机信号源-simulink-MatLab
  5. 小白学python(opencv边缘保留滤波EPF)
  6. 什么是接地电阻?如何测量防雷接地电阻
  7. 多元微积分_多元连式法则2 多元连式法则与方向向量
  8. 卡尔曼滤波器1——递归算法(笔记篇 + 代码实现)
  9. 烤仔的朋友们丨大饼破万,以太飞天,牛来了还是狼来了?
  10. P1936 水晶灯火灵