if (0.0 == locateLat || 0.0 == locateLng) {
MyLog.e(“[Location]Error Location, not update map”);
} else {
isLocated = true;
nowLatLng = new LatLng(locateLat, locateLng);
mListener.onLocationChanged(aLocation); // 显示系统小蓝点
}
MyLog.v(“[Location]Lat:” + locateLat + “,Lng:” + locateLng);
}
}
2.进行POI检索
/**
- 开始进行poi搜索
*/
protected void doSearchQuery() {
showProgressDialog(); // 显示进度框
currentPage = 0; // 重置页码
query = new PoiSearch.Query(keyWord, “”, editCity.getText().toString());// 第一个参数表示搜索字符串,第二个参数表示poi搜索类型,第三个参数表示poi搜索区域(空字符串代表全国)
query.setPageSize(10); // 设置每页最多返回多少条poiitem
query.setPageNum(currentPage);// 设置查第一页
poiSearch = new PoiSearch(this, query);
poiSearch.setOnPoiSearchListener(this);
poiSearch.searchPOIAsyn();
}
3.设置点击InfoWindow动作:
@Override
public View getInfoWindow(final Marker marker) {
View view = getLayoutInflater().inflate(R.layout.poikeywordsearch_uri,
null);
TextView title = (TextView) view.findViewById(R.id.title);
title.setText(marker.getTitle());
TextView snippet = (TextView) view.findViewById(R.id.snippet);
snippet.setText(marker.getSnippet());
ImageButton button = (ImageButton) view
.findViewById(R.id.start_amap_app);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 导航
// 起点终点列表
ArrayList startPoints = new ArrayList();
ArrayList endPoints = new ArrayList();
LatLng endLatLng = marker.getPosition();
NaviLatLng endNaviLatLng = new NaviLatLng(endLatLng.latitude,
endLatLng.longitude);
endPoints.add(endNaviLatLng);
NaviLatLng startNaviLatLng = new NaviLatLng(nowLatLng.latitude,
nowLatLng.longitude);
startPoints.add(startNaviLatLng);
if (isLocated) {
// DrivingSaveMoney–省钱
// DrivingShortDistance–最短距离
// DrivingNoExpressways–不走高速
// DrivingFastestTime–最短时间
// DrivingAvoidCongestion–避免拥堵
AMapNavi.getInstance(MainActivity.this)
.calculateDriveRoute(startPoints, endPoints, null,
AMapNavi.DrivingDefault);
mRouteCalculatorProgressDialog.show();
} else {
Toast.makeText(getApplicationContext(), “未定位”,
Toast.LENGTH_SHORT).show();
}
}
});
return view;
}
目前起始点之间路径上的箭头是反向的,后面看一下什么原因。
4.Update:添加模拟导航
@Override
public void onCalculateRouteSuccess() {
mRouteCalculatorProgressDialog.dismiss();
Intent intent = new Intent(MainActivity.this, SimpleNaviActivity.class);
尾声
最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。
Android进阶学习资料库
一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!
[外链图片转存中…(img-iQ9DFHKs-1714408791429)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!