基于android对接百度地图搜索附近关键字列表展示并调用第三方地图应用打开导航(百度地图、高德地图)

Android 打开第三方地图App进行导航 Ⅰ.前言 接到产品新需求,模仿高德地图APP通过搜索关键词,在地图标识附近区域内 "关键词"所搜到的点,地图和列表之间有抽屉似的效果,具体的看下面效果图。而打开第三方地图APP进行导航,也是产品要求的一个小功能,写完~记录下 效果图: Ⅱ.实现 参考官方文档 百度: http://lbsyun.baidu.com/index.php?title=uri/api/android 高德: ... 阅读详情

经过两天的折腾,终于把需求实现了,记录下过程与遇到的坑(详情链接)
先上效果图
搜索结果
搜索结果
点击列表中的去这里调取第三方地图APP,效果图
在这里插入图片描述

首先配置百度地图

		bBaiduMap = mMapView.getMap();
        bBaiduMap.setMyLocationEnabled(true);
        //定位初始化
        mLocationClient = new LocationClient(getActivity());
        MapStatus.Builder builder = new MapStatus.Builder();
        builder.zoom(17.0f);
        bBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
        //通过LocationClientOption设置LocationClient相关参数
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true); //打开gps
        option.setCoorType("bd09ll"); //设置坐标类型
        option.setScanSpan(10000);
        option.setIsNeedAddress(true);
        //设置locationClientOption
        mLocationClient.setLocOption(option);

        //注册LocationListener监听器
        MyLocationListener myLocationListener = new MyLocationListener();
        mLocationClient.registerLocationListener(myLocationListener);
        //开启地图定位图层
        mLocationClient.start();

搜索结果数据

		poiSearch = PoiSearch.newInstance();
        poiSearch.setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {
            @Override
            public void onGetPoiResult(PoiResult poiResult) {
                MyLog.e("PoiResult   " + poiResult.error);
                if (poiResult.error == SearchResult.ERRORNO.NO_ERROR) {
                    beans.clear();
                    List<PoiInfo> allPoi = poiResult.getAllPoi();
                    for (PoiInfo info : allPoi) {
                        MapBean bean = new MapBean();
                        bean.city = info.city;
//                        bean.distance = info.distance + "";
                        bean.name = info.name;
                        bean.addr = info.address;
                        bean.iv = getResources().getDrawable(R.mipmap.msg_img);
                        beans.add(bean);
                    }
                    adapter.setList(beans);
                }

            }

            @Override
            public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
                MyLog.e("PoiDetailResult   " + poiDetailResult.error);
            }

            @Override
            public void onGetPoiDetailResult(PoiDetailSearchResult poiDetailSearchResult) {
                MyLog.e("poiDetailSearchResult   " + poiDetailSearchResult.error);
            }

            @Override
            public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
                MyLog.e("poiIndoorResult   " + poiIndoorResult.error);
            }
        });

搜索事件

					poiSearch.searchInCity(new PoiCitySearchOption()
                            .city(city)
                            .keyword(v.getText().toString())//搜索的关键字
                            .pageCapacity(20)//一次搜索多少条数据
                            .pageNum(0));//0代表第1页

地址监听

public class MyLocationListener extends BDAbstractLocationListener {
        @Override
        public void onReceiveLocation(BDLocation location) {
            //mapView 销毁后不在处理新接收的位置
            if (location == null || mMapView == null) {
                return;
            }
            city = location.getCity();
            longitude = location.getLongitude();
            latitude = location.getLatitude();
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                    // 此处设置开发者获取到的方向信息,顺时针0-360
                    .direction(location.getDirection()).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            bBaiduMap.setMyLocationData(locData);
            LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
            if (isFirstLocate) {
                isFirstLocate = false;
                //给地图设置状态
                bBaiduMap.animateMapStatus(MapStatusUpdateFactory.newLatLng(ll));
            }
        }
    }

点击调取第三方地图APP事件

						mSearch.geocode(new GeoCodeOption()
                                .city(m.city)//城市
                                .address(m.addr));//详细地址



		mSearch = GeoCoder.newInstance();
        mSearch.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {
            @Override
            public void onGetGeoCodeResult(GeoCodeResult geoCodeResult) {
                LatLng location = geoCodeResult.getLocation();
                String address = geoCodeResult.getAddress();
                if (location != null) {
               
                        if (MapNaviUtils.isBaiduMapInstalled()) {//手机内是否安装了百度地图
                            MapNaviUtils.openBaiDuNavi(getActivity(), addr);

                        } else if (MapNaviUtils.isGdMapInstalled()) {//手机内是否安装了高德地图
                            MapNaviUtils.openGaoDeNavi(getActivity(), addr);

                        } else {//都没安装下载百度地图
                            new AlertDialog.Builder(getActivity())
                                    .setMessage("下载百度地图?")
                                    .setNegativeButton("取消", null)
                                    .setPositiveButton("下载", (dialog12, which12) -> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(MapNaviUtils.DOWNLOAD_BAIDU_MAP))))
                                    .show();
                        }
                    
	                } else {
	                    MyLog.e("onGetGeoCodeResult  location=null ");
	                }
            }

            @Override
            public void onGetReverseGeoCodeResult(ReverseGeoCodeResult reverseGeoCodeResult) {
            }
        });

打开百度地图

    public static void openBaiDuNavi(Context context, String dname) {
        String uri = "baidumap://map/geocoder?src=com.construction5000.yun&address=";
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setPackage(PN_BAIDU_MAP);
        intent.setData(Uri.parse(uri + dname));
        context.startActivity(intent);
    }

打开高德地图

    public static void openGaoDeNavi(Activity context, String dname) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setPackage(PN_GAODE_MAP);
        intent.setData(Uri.parse("androidamap://keywordNavi?sourceApplication=softname&keyword="+dname+"&style=2"));
        context.startActivity(intent);

    }

下篇遇到的坑(详情链接)

Android 百度地图-实现POI的搜索(搜索周边)附源码 首先贴出主要代码 Activity package cn.yhsh.maptest; import java.util.ArrayList; import utils.PoiOverlay; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Con... 阅读详情

相关推荐

Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK

前两天学习了一下Android的特色--LBS(基于百度地图Android SDK)。有些坑还是得填下,避免以后用到时忘记了。 一 .申请API_KEY 1)http://lbsyun.baidu.com/ :在这里注册并申请。注册之后出现应用列表 2)选择创建应用:下图所示 PS:SHA1找了我好久 按照书上面的,资料上看了,左侧选择项目目录类型project,打开右侧

万里不理 3799

Android集成百度地图实现搜索及列表展示

首先进入百度地图官网控制台创建应用获取API_KEY值 百度api官网 并下载对应的sdk包放入Android studio libs文件夹中,并按官方配置在build.gradle中加入libs与其他配置 AndroidManifest.xml中加入各种需要权限并加入 <application android:name=".MyApplication"> <service android:name="com.baidu..

weixin_43117800的博客 780

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

Android 跳转到第三方地图App实现方案Android 跳转到高德地图、腾讯地图、百度地图。跳转到第三方地图目标地点定位、目标地点附近关键字搜索

weixin_44158429的博客 1924

Android使用百度地图SDK,实现定位与关键字搜索定位

第一步:去百度地图开发平台官网http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5下载好sdk开发包并申请密钥。具体可以百度。建议先做一个小入门demo先 第二步:准备一个简单的布局文件如图(非常随便的一个布局…) 有三部分,上面是一个编辑框组件,用于输入关键字。中 间是地图组件,用于显示地图。下面是一个listview,用于显...

weixin_43271746的博客 4851

Android百度地图SDK实战:一键获取当前位置并搜索周边餐饮/酒店/加油站等POI

直接导入就能跑的Android地图功能工程,基于百度地图SDK v3.x(Java),支持GPS+WiFi混合定位,自动获取经纬度坐标,调用官方POI检索接口按分类查附近地点——比如餐饮、酒店、加油站、商场、学校等,结果实时渲染在地图上带气泡标注。代码结构清晰,MainActivity里封装了地图初始化、定位监听器注册、POI搜索请求与回调处理全流程;res目录含适配各屏幕密度的图标和基础布局文件;libs已预置百度SDK jar包及armeabi-v7a等so库;AndroidManifest.xml已配

k9l0m1的博客 194

Android实现带列表的地图POI周边搜索功能

先看效果图:(以公司附近的国贸为中心点) 上面是地图,下面是地理位置列表,有的只有地理位置列表(QQ动态的位置),这是个很常见的功能。它有个专门的叫法:POI周边搜索。 实现: 这个效果实现起来其实很简单,不过需要你先阅读下地图的API,这里使用的是高德地图的Android SDK,SDK的配置这里不作讲解,文末会放一些链接供学习。 思路: 1、利用地图的定位功能,获取用户当前的位置 2、根据获得的位置信息调用POI搜索,获取位置列表 3、ListView展示位置列表 4、用户拖动地图,获取地图中心坐标的位置信息,并执行2~3的步骤 代码: Layout: <LinearLayout

百度地图高德地图横向评测 出…

要说是现在的导航APP,《Google Maps》是当之无愧的大哥,可惜在由于先天的水土不服,它在国内并没有得到在海外的好成绩,至今国内的导航APP市场还在战国时代,各路豪杰各显其能。今天我们就来对《百度地图》和《高德地图》两款国内一流水平的导航APP进行评测,我们将主要从界面设计、应用功能、应用体验三项还对它们进行评测。 出行该带谁?" /> 打开一款APP,我们首先看到的就是它的界面,《百

zanshiyonghuming的博客 1524

RT-Thread与LWIP协议栈在GD32F450XX上的移植实战:从FreeRTOS到RT-Thread的切换指南

本文详细介绍了将LWIP协议栈从FreeRTOS移植到RT-Thread系统,并在GD32F450XX开发板上实现的完整实战指南。重点解析了sys_arch适配层、邮箱与信号量接口的关键改造,以及网络驱动ethernetif.c的适配步骤,帮助开发者解决线程通信差异,实现稳定网络连接。

linux6sysadmin的博客 824

Android实现高德地图之poi搜索功能(附带源码)

Android实现高德地图之poi搜索功能(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 947

Blender地形建模实战:5步搞定Gazebo仿真地形(附避坑指南)

本文提供了一份详细的Blender地形建模实战指南,旨在帮助开发者快速创建Gazebo仿真地形。文章通过五个核心步骤,从环境准备、地形雕刻、模型优化导出,到创建Gazebo模型包及问题排错,系统讲解了如何将Blender中的地形模型成功导入Gazebo进行机器人仿真,并重点分享了关键的避坑经验。

weixin_28475533的博客 344

FDTD远场分析实战:从monitor数据到3D远场可视化的完整流程

本文详细介绍了FDTD远场分析的完整流程,从monitor采集的近场数据出发,通过近场-远场变换(NFFFT)生成3D远场可视化结果。文章重点解析了远场转换的物理原理、关键参数设置,并提供了构建稳健数据处理流水线及高级可视化(如3D辐射方向图)的实战脚本与技巧,适用于天线设计与光学器件分析。

weixin_29063035的博客 228

android 跳转百度、高德、腾讯地图导航和周边功能实现

android 跳转百度、高德、腾讯地图导航和周边功能实现       开发app时候,地图跳转是很常见的一个功能,告诉你经纬度就可以实现唤醒百度、高德、腾讯地图进行地图导航,在加上关键字就可以实现周边功能的实现,前台需要动态判断手机上安装了哪些地图软件,若有则显示出来,没有则不显示,若用户手机上没有安装任何导航软件app,则需要引导用户去下载一款地图app软件。由于我这是h5开发环境,所以界面由...

诗雨远方的博客 4103

【Cadence】stb仿真和ac仿真——以一个简单的全差分反相放大器仿真为例

最近在补一些仿真方法学的问题,以及一些一直以来都有点模糊的概念,简单记录一下。搭建一个以两个CMOS反相器构成的全差分放大器(28nm工艺,PMOS和NMOS尺寸一致)激励的设置方便共模和差模仿真用同一个TB(这里有一个问题:这个放大器需要在开环下仿真还是闭环下?哪些放大器应用在开环,哪些闭环?这种应用场景不同会导致需要仿真得到开环还是闭环增益,或者环路增益?(我知道放大器在设计的时候肯定都是闭环应用的多,但是什么时候没必要闭环应用?光验证ac和stb仿真是否一样的话有必要有回路吗?

weixin_44951108的博客 5万+

android 高德地图范围圆圈公里_两大应用场景实测,高德地图和百度地图谁会更胜一筹?...

地图导航已经成为我们日常出行必不可少的伙伴,我们不仅需要它来规划路线,而且在查找景点、餐饮住宿地点等也派上了很大的用场。目前地图导航以高德地图和百度地图居于行业前列,也是人们使用和下载量较高的两款地图导航软件,不过两款软件也有一些不同,毕竟同类产品也需要靠差异化来吸引消费者。那么,接下来我们通过实际体验来看看高德地图和百度地图在细节方面有哪些不同,哪一款地图更贴心,它又是靠什么赢得消费者的心呢?路...

weixin_36141019的博客 937

Windows安装Pytorch3d

pytorch和pytorch3d版本对应关系如下:https://github.com/facebookresearch/pytorch3d/releasescuda和NVIDIA CUB版本对应关系如下:https://github.com/NVIDIA/cub/releases?page=1本人配置如下:GPU:1050TiCUDA:11.1python:3.8。

Snakewood的博客 4286

汽车零部件产线实战:C#上位机+YOLO实现螺栓装配到位视觉检测

本项目基于C#上位机+YOLOv8实现汽车零部件产线螺栓装配到位视觉检测,全程贴合产线实际场景,从硬件选型、安装调试,到模型训练、上位机开发,再到项目联调、优化扩展,均提供手把手实操指导,代码可直接复制使用,规避了工业视觉产线检测的高频踩坑点。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1330

android 高德地图设置不能旋转_地图导航哪家强?

导语: 我国经济在持续高速发展,我国人民的收入水平也随之水涨船高,这就使得我国人民的消费水平以及消费方式发生着日新月异的变化。现在的人们很多都喜欢旅游,或者是自驾游。但是很多情况下,我们在一个陌生的环境中难以找到一个正确的方向,于是手机导航软件应用而生,那么手机导航哪个好用呢?下面的这篇文章为大家推荐几款非常不错的手机导航软件,希望能够帮助到有需要的读者朋友们。百度地图首先为大家介绍的手机导航软件...

weixin_39724469的博客 289

基于Vivado MIG IP核的DDR3读写实验(top_rom_ddr/ddr_top)

一、前言 关于Vivado MIG IP核详细配置可以参考我之前的文章:基于Vivado MIG IP核的DDR3控制器(DDR3_CONTROL) 关于MIG IP核的用户端的接口时序可以参考这篇文章:XILINX 的 MIG IP(非AXI4)接口时序以及控制 二、实验内容 本次实验的内容主要是通过MIG IP核向DDR3读写数据,DDR3的接口时序由ddr_top模块提供: ddr_top模块的数据来源是wr_fifo,wr_fifo的数据实际来自top_sd_photo模块(本实验仿真

耐心的小黑的博客 3027

wince搜狗地图_什么导航好用又准确

展开全部好用准确的导航有高德地图、百度地图、腾讯地图等,推荐62616964757a686964616fe78988e69d8331333433616236如下:1、高德地图高德地图,高德是苹果中国地图数据独家供应商,拥有全面精准的地点信息,作为首款互联网车载导航,高德地图车机版支持车载大屏幕。还能联网看实时路况,躲避拥堵,与手机互联互通带来更便捷的数据更新和行程同步,更拥有优秀的离线路网数据,即...

weixin_34801390的博客 797

在 SAP S/4HANA Private Cloud 中把标准 CDS View 发布为 OData:可操作的四条路径与完整示例

在 ADT 中创建。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 722

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android 高德地图marker信息框不点击直接显示_高德地图VS百度地图,哪个更靠谱?...

国庆出行选择一个好的导航是非常有必要的,百度地图和高德地图都是我们最常用的手机导航软件,那么它们到底哪个更靠谱,更适合我们呢?1.界面设计从首页来看,高德的画面更简洁易懂,搜索框在下面,子菜单有驾车、公交地铁、打车等多个选项,把搜索栏往上拉,点击工具箱后长按图标,还可以照你喜欢的顺序调整。百度的界面更详细人性化,搜索框在上面,想要打车或获取公交路线,要么在搜索框输入目的地后切换,要么点击出行助手,...

weixin_39898011的博客 489

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

vue 腾讯地图展示用户定位附近的门店

本需求主要是获取用户当前定位,并将定位返回的经纬度坐标请求到后端接口,后端返回距离用户最近的门店,并且前端把门店标记在地图上。

weixin_39357177的博客 2150

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

React-Native-App实战:10分钟快速搭建LBS附近服务应用

想要在10分钟内快速搭建一个实用的LBS(基于位置服务)应用吗?React-Native-App项目为你提供了一个完美的入门实战案例!这个开源项目展示了如何使用React Native快速开发实用的移动应用,特别适合想要学习React Native开发的新手。今天,我将带你深入了解如何利用这个项目快速搭建一个功能完整的附近服务应用,包括查找附近的美食、银行、电影院和卫生间等实用功能。 ## 🚀

gitblog_00047的博客 445

android 高德地图设置不能旋转_这个地图APP,专注于地图软件该做的事!

BmapBmap,简单的双地图应用。可任意切换/高德地图数据源,致力满足日常生活的出行需求。具有步行、公交、骑行、驾驶等出行方案,查看街景。新版特性1.升级百度地图sdk6.0.02.升级高德地图sdk6.9.43.升级讯飞语音sdk11384.支持qq登录5.新增常州,徐州地铁图6.新增网页地图OpenStreetMap7.新增导航栏跟随主题色(设置中可开关)8.收藏点⭐️可隐藏9.算...

weixin_39917046的博客 1060

Qt/C++如何选择使用哪一种地图内核/不同地图的优缺点/百度高德腾讯地图/天地图/谷歌地图

最近花了大半年时间,专门研究这个地图组件,几乎把各种地图的官网的手册翻了个遍,亲自写代码验证了一遍,各种API函数接口和功能全部实战一遍,然后从中提取共性,做出了基类,以及通用函数类,子类再对该地图特殊功能进行单独的处理。那么问题来了,这些地图各自有哪些优缺点呢?面对具体的实际需求应该怎么选?不同的地图内核有不同的优缺点,一般国内使用比较多的是百度地图、高德地图、天地图三种,谷歌由于需要翻墙才能使用,导致国内用户数很低。综合使用对比下来看,高德地图在api接口和文档示例方面最丰富的,应用场景也最全;

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 2253

android 高德地图marker信息框不点击直接显示_敢问路在何方?四款手机地图软件横向测评...

从爱斯基摩人绘制的海港图到今天的卫星地图,从哥伦布勇闯新大陆的粗糙航海图到今天人们出门精确到米的手机地图,几千年来地图伴随着人类文明进步发生了天翻地覆的变化。▲ 航海图二十年前出门在外,纸质地图还是必备的物品,旅游景点里随处可见旅游图、路线图,游客们在地图上摸索前进路线。跑运输的卡车司机、户外探险徒步、地质勘探人员,这些人都会用到纸质地图,在一张张地图指引下走南闯北、勘探探险。到如今,随着当今时代...

weixin_28358083的博客 448
上一篇: 个人Androidstudio快捷键及常用设置配置
下一篇: android 接百度SDK遇到的坑(百度地图BD09经纬度转高德地图GCJ02经纬度)
android_frost
博客等级 码龄10年 209粉丝 28原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

android_frost

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值