Android 使用百度导航SDK 2

if (-1 == NetworkUtil.getNetworkType(getApplicationContext())) {

NetworkUtil.noNetworkHint(getApplicationContext());

} else {

String textCity = etHistoryCity.getText().toString();

boolean isInputCity = textCity != null

&& textCity.trim().length() > 0;

if (isNear) {

// 周边搜索

Toast.makeText(

getApplicationContext(),

getResources().getString(R.string.poi_search_near)

  • where, Toast.LENGTH_SHORT).show();

PoiNearbySearchOption poiOption = new PoiNearbySearchOption();

poiOption.keyword(where);

poiOption.location(centerLatLng);

poiOption.radius(15 * 1000 * 1000); // 检索半径,单位:m

poiOption.sortType(PoiSortType.distance_from_near_to_far); // 按距离排序

// poiOption.sortType(PoiSortType.comprehensive); // 按综合排序

poiOption.pageNum(0); // 分页编号

poiOption.pageCapacity(10); // 设置每页容量,默认为每页10条

try {

mPoiSearch.searchNearby(poiOption);

} catch (Exception e) {

e.printStackTrace();

}

} else {

if (!isInputCity) {

// 周边搜索

Toast.makeText(

getApplicationContext(),

getResources().getString(

R.string.poi_search_near)

  • where, Toast.LENGTH_SHORT).show();

PoiNearbySearchOption poiOption = new PoiNearbySearchOption();

poiOption.keyword(where);

poiOption.location(centerLatLng);

poiOption.radius(15 * 1000 * 1000); // 检索半径,单位:m

poiOption

.sortType(PoiSortType.distance_from_near_to_far); // 按距离排序

// poiOption.sortType(PoiSortType.comprehensive); //

// 按综合排序

poiOption.pageNum(0); // 分页编号

poiOption.pageCapacity(10); // 设置每页容量,默认为每页10条

try {

mPoiSearch.searchNearby(poiOption);

} catch (Exception e) {

e.printStackTrace();

}

} else {

// 全国搜索

Toast.makeText(

getApplicationContext(),

getResources().getString(R.string.poi_in_city)

  • textCity

  • getResources().getString(

R.string.poi_search) + where,

Toast.LENGTH_SHORT).show();

PoiCitySearchOption poiOption = new PoiCitySearchOption();

poiOption.city(textCity);

poiOption.keyword(where);

poiOption.pageNum(0);

poiOption.pageCapacity(10);

mPoiSearch.searchInCity(poiOption);

}

// 存储搜索历史到数据库,周边不需要

int existId = naviDb.getNaviIdByKey(where);

if (existId != -1) {

naviDb.deleteNaviHistoryById(existId);

}

NaviHistory naviHistory = new NaviHistory(where, textCity);

naviDb.addNaviHistory(naviHistory);

naviHistoryAdapter.notifyDataSetChanged();

}

}

}

}

坐标系转化:

/**

  • startLatitude,startLongitude为bd09ll

  • bdLocStartAfter.getLongitude()和bdLocStartAfter.getLatitude()即为转化过的坐标系

  • BDLocation.BDLOCATION_BD09LL_TO_GCJ02表示从bd09ll转成gcj02坐标系

*/

BDLocation bdLocStartBefore = new BDLocation();

bdLocStartBefore.setLatitude(startLatitude);

bdLocStartBefore.setLongitude(startLongitude);

BDLocation bdLocStartAfter = LocationClient.getBDLocationInCoorType(

bdLocStartBefore, BDLocation.BDLOCATION_BD09LL_TO_GCJ02);

周边和收藏

在导航的基础上,实现了周边搜索和收藏的功能:

这里写图片描述

这里写图片描述
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

愿你有一天,真爱自己,善待自己。

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

得这些内容对你有帮助,可以扫码获取!!(备注:Android)**

最后

愿你有一天,真爱自己,善待自己。

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
  • 29
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android应用中使用百度地图导航SDK添加途径点,您需要按照以下步骤进行操作: 1. 在您的Android项目中,添加百度地图导航SDK的依赖。您可以在项目的build.gradle文件中添加以下代码: ```groovy dependencies { implementation 'com.baidu.mapapi:navisdk:5.1.0' } ``` 2. 在您的布局文件中添加一个地图视图。您可以使用MapView控件来显示地图。例如,在XML布局文件中添加以下代码: ```xml <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 3. 在您的Activity或Fragment中,初始化地图和导航功能。您可以在onCreate方法中添加以下代码: ```java // 初始化地图 MapView mMapView = findViewById(R.id.bmapView); BaiduMap mBaiduMap = mMapView.getMap(); // 初始化导航功能 BNRoutePlanNode sNode = new BNRoutePlanNode.Builder() .name("起点") .latitude(startLat) .longitude(startLng) .build(); BNRoutePlanNode eNode = new BNRoutePlanNode.Builder() .name("终点") .latitude(endLat) .longitude(endLng) .build(); BNRoutePlanNode[] nodes = new BNRoutePlanNode[]{sNode, eNode}; // 设置途径点 BNRoutePlanNode viaNode = new BNRoutePlanNode.Builder() .name("途径点") .latitude(viaLat) .longitude(viaLng) .build(); List<BNRoutePlanNode> throughNodes = new ArrayList<>(); throughNodes.add(viaNode); // 创建导航实例 BNRoutePlanNode startNode = nodes[0]; BNRoutePlanNode endNode = nodes[1]; BaiduNaviManager.getInstance().init(this, null, null, new BaiduNaviManager.NaviInitListener() { @Override public void onAuthResult(int i, String s) { // 初始化结果处理 } @Override public void initSuccess() { // 初始化成功处理 // 开始导航 BaiduNaviManager.getInstance().launchNavigator( YourActivity.this, startNode, endNode, throughNodes, BaiduNaviManager.RoutePlanPreference.ROUTE_PLAN_MOD_RECOMMEND, true, new BaiduNaviManager.RoutePlanListener() { @Override public void onJumpToNavigator(Bundle bundle) { // 开始导航回调 Intent intent = new Intent(YourActivity.this, YourNavigatorActivity.class); intent.putExtras(bundle); startActivity(intent); } @Override public void onRoutePlanFailed() { // 导航失败处理 } }); } @Override public void initStart() { // 初始化开始处理 } @Override public void initFailed() { // 初始化失败处理 } }); ``` 在上述代码中,您需要替换`startLat`、`startLng`、`endLat`、`endLng`、`viaLat`和`viaLng`为实际的起点、终点和途径点的经纬度。 4. 创建一个新的Activity(例如`YourNavigatorActivity`)来显示导航界面。您可以在该Activity的onCreate方法中添加以下代码: ```java // 获取导航视图 BaiduNaviManager.getInstance().init(YourNavigatorActivity.this, null, null, new BaiduNaviManager.NaviInitListener() { @Override public void onAuthResult(int i, String s) { // 初始化结果处理 } @Override public void initSuccess() { // 初始化成功处理 // 创建导航视图 View navigatorView = BNavigator.getInstance().init( YourNavigatorActivity.this, getIntent().getExtras(), YourNavigatorActivity.class); if (navigatorView != null) { setContentView(navigatorView); } } @Override public void initStart() { // 初始化开始处理 } @Override public void initFailed() { // 初始化失败处理 } }); ``` 这样,您就可以在您的Android应用中使用百度地图导航SDK并添加途径点了。请注意,使用SDK需要您在百度开发者平台上注册并获取相应的API密钥,并将其配置到您的项目中。此外,还需要权限申请和处理其他相关逻辑,具体可参考百度地图导航SDK的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值