android开发游记:APP内部调启百度、高德、web地图导航

来源:互联网 发布:淘宝网原珍向天果官网 编辑:程序博客网 时间:2024/06/08 03:45

目录(?)[+]

  1. 使用方法
  2. 下面解释主要代码

一些地图相关的app一般都需要集成导航的功能方便用户使用,但实际上我们很多时候仅仅只是希望提供这样一个贴心的功能把用户送到目的地,而并不会在导航过程中进行自己的业务的处理,这样把导航的功能完全独立出来了,像这样的需求我们就不用在app里自己去集成导航的功能,而是启调用户手机里已有的导航工具这样不是更好吗,像购物类的应用只需要关心导航的结果把用户送到商城,而不关心其过程。调启用户已安装地图工具来导航用户自然也更加熟悉自己常用的地图工具。这样反而方便了用户也简单了我们的应用。那么如何在自己app内检测安装的地图工具并启调呢:

这里写图片描述 这里写图片描述

这里写图片描述

由于目前提供地图工具的各种三方的启调方法和参数都不一样,所有不能直接使用资源管理器来打开地图工具,只能自己去用户手机里检测地图工具,并更具用户的选择不同而使用不同的启调方式来启调地图工具。

我做了一个demo,可以启调百度和高度地图,由于腾讯地图没有提供启调接口所以并不支持,如果用户手机没有安装地图工具会提示在浏览器中启调百度提供的web导航:

这里写图片描述 这里写图片描述

下面是下载地址:
调启百度、高德地图导航Demo

先说一下在自己工程中的使用方法,在解释实现方法

使用方法:

把下面的所有类和layout下的所有部件文件拷贝到自己工程:

这里写图片描述

然后在需要启调的地方执行下面代码弹出选择启调app的对话框就可以了,该对话框内部会自动检测用户手机应用,决定是打开地图工具还是启用web导航:

<code class="hljs cs has-numbering">    NativeDialog msgDialog = <span class="hljs-keyword">new</span> NativeDialog(<span class="hljs-keyword">this</span>, loc_now, loc_end);    msgDialog.show();</code><ul class="pre-numbering"><li>1</li><li>2</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>

这样就可以运行了,使用方法很简单,所有逻辑都封装在NativeDialog对话框里处理了。

下面解释主要代码:

功能上主要分成2个部分:

  1. 如何获取手机中的地图工具应用
  2. 如何启调这些应用

首先,获取地图工具app没有直接的方法,尝试了各种通过过滤来筛选的方法都达不到想要的效果,而且并不是每一种地图工具都能支持启调,比如搜狗地图。目前市面主流的就百度和高德支持,至于腾讯地图官网给的说法是即将支持。这样我们就只能获取手机中所有app的信息来进行筛选,我们只筛选高德和百度,那么我们怎么来筛选呢。每个app都有一个唯一的包名,我们通过对比包名来筛选app,首先我们定义一个集合里面存放需要匹配的应用的包名:

<code class="hljs cs has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String[] paks = <span class="hljs-keyword">new</span> String[]{<span class="hljs-string">"com.baidu.BaiduMap"</span>,        <span class="hljs-comment">//百度</span>                                           <span class="hljs-string">"com.autonavi.minimap"</span>};     <span class="hljs-comment">//高德</span></code><ul class="pre-numbering"><li>1</li><li>2</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>

通过getInstalledPackages方法可以获取到应用所有的app信息:

<code class="hljs avrasm has-numbering">List<PackageInfo> packageInfos = context<span class="hljs-preprocessor">.getPackageManager</span>()<span class="hljs-preprocessor">.getInstalledPackages</span>(<span class="hljs-number">0</span>)<span class="hljs-comment">;</span></code><ul class="pre-numbering"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>

我们可以先定义一个方法通过包名来筛选app:

<code class="hljs java has-numbering">    <span class="hljs-javadoc">/**     * 通过包名获取应用信息     *<span class="hljs-javadoctag"> @param</span> context     *<span class="hljs-javadoctag"> @param</span> packageName     *<span class="hljs-javadoctag"> @return</span>     */</span>    <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> AppInfo <span class="hljs-title">getAppInfoByPak</span>(Context context, String packageName){        PackageManager packageManager = context.getPackageManager();        List<PackageInfo> packageInfos = packageManager.getInstalledPackages(<span class="hljs-number">0</span>);        <span class="hljs-keyword">for</span> (PackageInfo packageInfo : packageInfos) {            <span class="hljs-keyword">if</span> (packageName.equals(packageInfo.packageName)) {                AppInfo tmpInfo =<span class="hljs-keyword">new</span> AppInfo();                 tmpInfo.setAppName(packageInfo.applicationInfo                        .loadLabel(packageManager).toString());                 tmpInfo.setPackageName(packageInfo.packageName);                 tmpInfo.setVersionName(packageInfo.versionName);                 tmpInfo.setVersionCode(packageInfo.versionCode);                 tmpInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(packageManager));                <span class="hljs-keyword">return</span> tmpInfo;            }        }        <span class="hljs-keyword">return</span> <span class="hljs-keyword">null</span>;    }</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>

然后调用上面的方法把集合中的报名逐个进行匹配:

<code class="hljs java has-numbering">    <span class="hljs-javadoc">/**     * 返回当前设备上的地图应用集合     *<span class="hljs-javadoctag"> @param</span> context     *<span class="hljs-javadoctag"> @return</span>     */</span>    <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> List<AppInfo> <span class="hljs-title">getMapApps</span>(Context context) {        LinkedList<AppInfo> apps = <span class="hljs-keyword">new</span> LinkedList<AppInfo>();        <span class="hljs-keyword">for</span> (String pak : paks) {            AppInfo appinfo = getAppInfoByPak(context,pak);            <span class="hljs-keyword">if</span> (appinfo!=<span class="hljs-keyword">null</span>) {                apps.add(appinfo);            }        }        <span class="hljs-keyword">return</span> apps;    }</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li></ul><div class="save_code tracking-ad" style="display: none;" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>

然后在初始化对话框的时候根据匹配的结果动态生成布局,给弹出窗设置应用的名称和图标:

<code class="hljs avrasm has-numbering">for (int i = <span class="hljs-number">0</span><span class="hljs-comment">; i < apps.size(); i++) {</span>    AppInfo app = apps<span class="hljs-preprocessor">.get</span>(i)<span class="hljs-comment">;</span>    //定义左右边距<span class="hljs-number">15</span>    LinearLayout<span class="hljs-preprocessor">.LayoutParams</span> para = new  LinearLayout<span class="hljs-preprocessor">.LayoutParams</span>(                            LayoutParams<span class="hljs-preprocessor">.WRAP</span>_CONTENT,                             LayoutParams<span class="hljs-preprocessor">.WRAP</span>_CONTENT)<span class="hljs-comment">;</span>    para<span class="hljs-preprocessor">.setMargins</span>(<span class="hljs-number">15</span>, <span class="hljs-number">0</span>, <span class="hljs-number">15</span>, <span class="hljs-number">0</span>)<span class="hljs-comment">; // left,top,right, bottom</span>    para<span class="hljs-preprocessor">.gravity</span> = Gravity<span class="hljs-preprocessor">.CENTER</span><span class="hljs-comment">;</span>    TextView textView = new TextView(context)<span class="hljs-comment">;</span>    textView<span class="hljs-preprocessor">.setCompoundDrawablesWithIntrinsicBounds</span>(null,app<span class="hljs-preprocessor">.getAppIcon</span>(), null, null)<span class="hljs-comment">;    //设置图标</span>    textView<span class="hljs-preprocessor">.setText</span>(app<span class="hljs-preprocessor">.getAppName</span>())<span class="hljs-comment">;                             //设置文字</span>    textView<span class="hljs-preprocessor">.setTextAppearance</span>(context, R<span class="hljs-preprocessor">.style</span><span class="hljs-preprocessor">.text</span>_small_dark)<span class="hljs-comment">;   //设置风格</span>    textView<span class="hljs-preprocessor">.setLayoutParams</span>(para)<span class="hljs-comment">;                                 //设置边距</span>    textView<span class="hljs-preprocessor">.setGravity</span>(Gravity<span class="hljs-preprocessor">.CENTER</span>_HORIZONTAL)<span class="hljs-comment">;                 //设置图标文字水平居中</span>    textView<span class="hljs-preprocessor">.setSingleLine</span>(true)<span class="hljs-comment">;                                   //设置单行显示</span>    textView<span class="hljs-preprocessor">.setEllipsize</span>(TruncateAt<span class="hljs-preprocessor">.END</span>)<span class="hljs-comment">;                          //设置超出长度显示省略…</span>    textView<span class="hljs-preprocessor">.setMaxEms</span>(<span class="hljs-number">6</span>)<span class="hljs-comment">;                                          //设置最大长度</span>    textView<span class="hljs-preprocessor">.setTag</span>(app<span class="hljs-preprocessor">.getPackageName</span>())<span class="hljs-comment">;                          //设置包名为tag</span>    textView<span class="hljs-preprocessor">.setOnClickListener</span>(applistener)<span class="hljs-comment">;                       //设置监听</span>    views<span class="hljs-preprocessor">.add</span>(textView)<span class="hljs-comment">;</span>    ...}</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>

这样就完成了第一步。现在获取到了应用的信息,那么如何启调呢。
每个三方应用的启调方式都不同,这就要查阅官方文档,然后制订相应的方法来启调它,这里我总结了目前市面上可启调的地图应用,把启调方法都封装在一个工具类里AppUtil,里面给出了百度高德和web浏览器的几种启调方法:

这里写图片描述

这里贴上高德和百度地图的通过Intent启调的方法:

<code class="hljs avrasm has-numbering">    public static void startNative_Baidu(Context context,Location loc1,Location loc2){        if (loc1==null || loc2==null) {            return<span class="hljs-comment">;</span>        }        if (loc1<span class="hljs-preprocessor">.getAddress</span>()==null || <span class="hljs-string">""</span><span class="hljs-preprocessor">.equals</span>(loc1<span class="hljs-preprocessor">.getAddress</span>())) {            loc1<span class="hljs-preprocessor">.setAddress</span>(<span class="hljs-string">"我的位置"</span>)<span class="hljs-comment">;</span>        }        if (loc2<span class="hljs-preprocessor">.getAddress</span>()==null || <span class="hljs-string">""</span><span class="hljs-preprocessor">.equals</span>(loc2<span class="hljs-preprocessor">.getAddress</span>())) {            loc2<span class="hljs-preprocessor">.setAddress</span>(<span class="hljs-string">"目的地"</span>)<span class="hljs-comment">;</span>        }        try {            Intent intent = Intent<span class="hljs-preprocessor">.getIntent</span>(<span class="hljs-string">"intent://map/direction?origin=latlng:"</span>+loc1<span class="hljs-preprocessor">.getStringLatLng</span>()+<span class="hljs-string">"|name:"</span>+loc1<span class="hljs-preprocessor">.getAddress</span>()+<span class="hljs-string">"&destination=latlng:"</span>+loc2<span class="hljs-preprocessor">.getStringLatLng</span>()+<span class="hljs-string">"|name:"</span>+loc2<span class="hljs-preprocessor">.getAddress</span>()+<span class="hljs-string">"&mode=driving&src=重庆快易科技|CC房车-车主#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end"</span>)<span class="hljs-comment">;</span>            context<span class="hljs-preprocessor">.startActivity</span>(intent)<span class="hljs-comment">;</span>        } catch (Exception e) {            e<span class="hljs-preprocessor">.printStackTrace</span>()<span class="hljs-comment">;</span>            Toast<span class="hljs-preprocessor">.makeText</span>(context, <span class="hljs-string">"地址解析错误"</span>, Toast<span class="hljs-preprocessor">.LENGTH</span>_SHORT)<span class="hljs-preprocessor">.show</span>()<span class="hljs-comment">;</span>        }    }    public static void startNative_Gaode(Context context,Location loc){        if (loc==null) {            return<span class="hljs-comment">;</span>        }        if (loc<span class="hljs-preprocessor">.getAddress</span>()==null || <span class="hljs-string">""</span><span class="hljs-preprocessor">.equals</span>(loc<span class="hljs-preprocessor">.getAddress</span>())) {            loc<span class="hljs-preprocessor">.setAddress</span>(<span class="hljs-string">"目的地"</span>)<span class="hljs-comment">;</span>        }        try {            Intent intent = new Intent(<span class="hljs-string">"android.intent.action.VIEW"</span>,            android<span class="hljs-preprocessor">.net</span><span class="hljs-preprocessor">.Uri</span><span class="hljs-preprocessor">.parse</span>(<span class="hljs-string">"androidamap://navi?sourceApplication=CC房车-车主&poiname=重庆快易科技&lat="</span>+loc<span class="hljs-preprocessor">.getLat</span>()+<span class="hljs-string">"&lon="</span>+loc<span class="hljs-preprocessor">.getLng</span>()+<span class="hljs-string">"&dev=1&style=2"</span>))<span class="hljs-comment">;</span>            intent<span class="hljs-preprocessor">.setPackage</span>(<span class="hljs-string">"com.autonavi.minimap"</span>)<span class="hljs-comment">;</span>            context<span class="hljs-preprocessor">.startActivity</span>(intent)<span class="hljs-comment">;</span>        } catch (Exception e) {            e<span class="hljs-preprocessor">.printStackTrace</span>()<span class="hljs-comment">;</span>            Toast<span class="hljs-preprocessor">.makeText</span>(context, <span class="hljs-string">"地址解析错误"</span>, Toast<span class="hljs-preprocessor">.LENGTH</span>_SHORT)<span class="hljs-preprocessor">.show</span>()<span class="hljs-comment">;</span>        }    }</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li></ul><div class="save_code tracking-ad" style="display: none;" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>

其中传入的参数Location类型是封装坐标的实体类,如下:

<code class="hljs java has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Location</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serializable</span>{</span>    <span class="hljs-keyword">private</span> <span class="hljs-keyword">double</span> lat;         <span class="hljs-comment">//坐标纬度</span>    <span class="hljs-keyword">private</span> <span class="hljs-keyword">double</span> lng;         <span class="hljs-comment">//坐标经度</span>    <span class="hljs-keyword">private</span> String address;     <span class="hljs-comment">//地址</span>    <span class="hljs-comment">//get&set方法</span>}</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><div class="save_code tracking-ad" style="display: none;" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>

注意高德地图参数只需要终点坐标就可以了,而百度地图启调导航需要一个起始坐标和终点坐标,起始坐标就是你的当前位置你要自行获取。

实际运行后发现,高德地图启调后直接进入导航,而百度地图会先进入路径规划页面,下面有个开始导航的按钮点击后才会开始导航:
这里写图片描述

虽然要多点一下,但事实上用户并不喜欢这样,难度百度地图就不能直接进入导航吗,自行研究发现百度地图也可以启调后直接进入导航,不过要使用SDK提供的方法来进行启调,这就必须在工程中导入百度的SDK,导入后直接使用下面的方法就可以了:

<code class="hljs coffeescript has-numbering">    <span class="hljs-regexp">//</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">##</span>    <span class="hljs-regexp">//</span>通过SDK接口启调地图工具    <span class="hljs-regexp">//</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">##</span>    public static <span class="hljs-reserved">void</span> startNativeBySDK_Baidu(Context context,Location loc1,Location loc2){        <span class="hljs-keyword">if</span> (loc1==<span class="hljs-literal">null</span> || loc2==<span class="hljs-literal">null</span>) {            <span class="hljs-keyword">return</span>;        }        <span class="hljs-keyword">if</span> (loc1.getAddress()==<span class="hljs-literal">null</span> || <span class="hljs-string">""</span>.equals(loc1.getAddress())) {            loc1.setAddress(<span class="hljs-string">"我的位置"</span>);        }        <span class="hljs-keyword">if</span> (loc2.getAddress()==<span class="hljs-literal">null</span> || <span class="hljs-string">""</span>.equals(loc2.getAddress())) {            loc2.setAddress(<span class="hljs-string">"目的地"</span>);        }        NaviParaOption para = <span class="hljs-keyword">new</span> NaviParaOption().startPoint(MyDistanceUtil.entity2Baidu(loc1))                                                  .startName(loc1.getAddress())                                                  .endPoint(MyDistanceUtil.entity2Baidu(loc2))                                                  .endName(loc2.getAddress());        <span class="hljs-keyword">try</span> {            BaiduMapNavigation.openBaiduMapNavi(para, context);        } <span class="hljs-keyword">catch</span> (BaiduMapAppNotSupportNaviException e) {            e.printStackTrace();            Toast.makeText(context, <span class="hljs-string">"地址解析错误"</span>, Toast.LENGTH_SHORT).show();        }    }</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li></ul><div class="save_code tracking-ad" style="display: none;" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>

使用这种方式就可以直接进入导航,但是麻烦的是必须导入SDK,真是不知道百度这样设计的用意是…

如果用户手机没有装地图工具,那么就启调默认浏览器调用web导航,目前就只有百度提供了在浏览器中的导航支持,同样的也有两种启调方式,一种外部直接调,一种使用SDK调用…

<code class="hljs coffeescript has-numbering">        <span class="hljs-regexp">//</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">#</span>        <span class="hljs-regexp">//</span>第一种方式:这种方式需要导入百度sdk,才能进行启调,如果没导入会找不到类        <span class="hljs-regexp">//</span>建议使用这种方式,对浏览器的兼容更好。        <span class="hljs-regexp">//</span>注释掉这里段代码,取消下面第二种方式的注释可以启用第二种方式        NaviParaOption para = <span class="hljs-keyword">new</span> NaviParaOption()                        .startPoint(MyDistanceUtil.entity2Baidu(loc_now))                        .endPoint(MyDistanceUtil.entity2Baidu(loc_end));        BaiduMapNavigation.openWebBaiduMapNavi(para, context);        <span class="hljs-regexp">//</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">#</span>        <span class="hljs-regexp">//</span>第二种方式:这种方式不需要导入百度sdk,可以直接使用        <span class="hljs-regexp">//</span>不推建使用这种方式,浏览器兼容问题比较严重,比如qq浏览器会封杀百度的此功能。        <span class="hljs-regexp">//</span>注释掉这里段代码,取消上面第一种方式的注释可以启用第一种方式        <span class="hljs-regexp">//</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">#</span>        <span class="hljs-regexp">//</span>String url = APPUtil.getWebUrl_Baidu(loc_now, loc_end);        <span class="hljs-regexp">//</span>Intent intent = <span class="hljs-keyword">new</span> Intent(Intent.ACTION_VIEW);        <span class="hljs-regexp">//i</span>ntent.setData(Uri.parse(url));        <span class="hljs-regexp">//</span>context.startActivity(intent);        <span class="hljs-regexp">//</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">#</span></code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li></ul><div class="save_code tracking-ad" style="display: none;" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>

上面调用的一个静态方法,用于构建启调Intent的url:

<code class="hljs coffeescript has-numbering">    <span class="hljs-regexp">//</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">##</span>    <span class="hljs-regexp">//</span>通启调web地图    <span class="hljs-regexp">//</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">######</span><span class="hljs-comment">##</span>    public static String getWebUrl_Baidu(Location loc1,Location loc2){        <span class="hljs-keyword">if</span> (loc1==<span class="hljs-literal">null</span> || loc2==<span class="hljs-literal">null</span>) {            <span class="hljs-keyword">return</span> <span class="hljs-literal">null</span>;        }        <span class="hljs-keyword">if</span> (loc1.getAddress()==<span class="hljs-literal">null</span> || <span class="hljs-string">""</span>.equals(loc1.getAddress())) {            loc1.setAddress(<span class="hljs-string">"我的位置"</span>);        }        <span class="hljs-keyword">if</span> (loc2.getAddress()==<span class="hljs-literal">null</span> || <span class="hljs-string">""</span>.equals(loc2.getAddress())) {            loc2.setAddress(<span class="hljs-string">"目的地"</span>);        }        <span class="hljs-keyword">return</span> <span class="hljs-string">"http://api.map.baidu.com/direction?origin=latlng:"</span>+loc1.getStringLatLng()+<span class="hljs-string">"|name:"</span>+loc1.getAddress()+<span class="hljs-string">"&destination=latlng:"</span>+loc2.getStringLatLng()+<span class="hljs-string">"|name:"</span>+loc2.getAddress()+<span class="hljs-string">"&mode=driving&src=重庆快易科技|CC房车-车主"</span>;    }</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li></ul><div class="save_code tracking-ad" style="display: block;" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>
   
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 路由器进不去设置界面怎么办 手机号丢了微信登不上怎么办 电脑总是闪黑屏怎么办 支付宝破产钱怎么办 淘宝号码注册过怎么办 农行k宝怎么办信用卡 电脑页面无法显示怎么办 对方银行停止收款怎么办 淘宝东西买太多怎么办 淘宝号黑号了怎么办… 中通包裹异常怎么办 包裹退回去了怎么办 qq支付密码错误怎么办 ie8出现闪退怎么办 平板输不了密码怎么办 华硕笔记本键盘打不开怎么办 电脑打不开rar文件怎么办 苹果手机淘宝卡怎么办 淘宝联盟网址打不开怎么办 淘宝买东西卖家不退货怎么办 手机清理后微信打不开视频怎么办 搜索历史已关闭怎么办 微博重新激活怎么办 淘宝直播反应慢怎么办 微信新设备无法登录怎么办 dnf自动连接失败怎么办 APP注册没有成功怎么办 忘记绑定微信号怎么办 淘宝钻石绣被骗怎么办 safari出现闪退怎么办 12123手机号被占用怎么办 12306换手机了怎么办 51串口打开失败怎么办 打开com串口失败怎么办 xp串口打开失败怎么办 台式电脑没光驱怎么办 相机功能用不了怎么办 支付宝登录失败怎么办 淘宝号限制登陆怎么办 海信电视看不了怎么办 淘宝不记得密码怎么办