android开发游记:APP内部调启百度、高德、web地图导航
来源:互联网 发布:淘宝网原珍向天果官网 编辑:程序博客网 时间:2024/06/08 03:45
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
- 使用方法
- 下面解释主要代码
一些地图相关的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个部分:
- 如何获取手机中的地图工具应用
- 如何启调这些应用
首先,获取地图工具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>
- android开发游记:APP内部调启百度、高德、web地图导航
- android开发游记:APP内部调启百度、高德、web地图导航
- App调用百度高德地图导航
- Android app调用第三方地图(百度地图,高德地图,谷歌地图)导航
- Android app调用第三方地图(百度地图,高德地图)导航
- android APP调起地图导航(谷歌,高德,百度)工具类
- android app调用第三方地图路线规划导航(百度,高德,腾讯)
- 地图-导航(百度/高德)
- 封装的导航工具类,两行代码搞定iOS App内部跳转第三方应用(百度、高德、苹果)地图导航
- android开发游记:百度地图SDK基础地图的使用
- android打开外部地图导航(百度、高德、腾讯)
- App外部跳转百度地图,高德地图,进行导航,路径规划等
- Android调用高德地图app语音导航
- Android百度地图、高德地图、腾讯地图导航路线规划问题
- Android百度地图、高德地图、腾讯地图导航路线规划问题
- Android调起百度和高德地图导航(不导入SDK)
- 调起百度、高德、腾讯地图导航功能
- iOS 调起地图App进行导航(百度,高德,系统自带高德)URL API方式
- 重载函数
- OpenJudge - 2989 糖果 动态规划(DP) 重庆一中高2018级竞赛班第十一次测试 2016.9.24 Problem 2
- Module中无法使用R文件问题
- 关于js中var关键字的作用
- 各大搜索引擎智能提示API(jsonp实现跨域自动补全建议)
- android开发游记:APP内部调启百度、高德、web地图导航
- 指令系统及汇编语言程序设计
- Sql基础练习02
- 最熟悉的陌生人:ListView 中的观察者模式
- 分享几个Android的面试经历
- jquery eval解析JSON中的注意点介绍
- 界面库中使用lua脚本
- #Paper Reading# Lifelong Learning for Sentiment Classification
- 剑指offer--面试题42:翻转单词顺序列 vs 左旋转字符串