在我大学毕业之前,我的大学毕业设计是基于Android的公交路线查询系统。该系统提供了公交线路、站点和换乘的查询。本项目采用的是sqllite的离线本地数据库的查询,这样不受手机网络的影响,手机在没有无线网络的环境下也可以查询公交信息。具体完成的功能如下:
1、线路查询
系统提供线路模糊查询功能,通过输入线路关键字,系统自动匹配得到存在的线路列表,用户再选择某一条线路查询其详细的信息;
2、站点查询
系统提站点名称模糊查询功能,通过输入站点名称关键字,系统自动匹配得到存在的站点列表,用户再选择某一个站点查询该站点的详细细的信息,包括经过该站点的所有公交线路;
3、地图模块
采用的是百度的免费地图模块,可以在地图中显示一条线路的行车轨迹以及该线路经过的所有站点,点击某一站点可以查看该站点的详细信息,还可根据用户位置自动定位,并显示附近的所有公交站点;
4、换乘查询
可以查询一个站点到另外一个站点的直达或换乘方案;整个系统的整体功能框架。
下面我将具体关键代码细节跟大家做一个分享,希望大家对移动端的开发,特别是基于地图功能的路线查询功能有所帮助。
(1)百度定位功能代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
db = new BusDatabaseHelper(BusBaiduMapActivity.this);
app = (com.miebo.android.bus.activity.CommonApplication) this.getApplication();
if (app.mBMapManager == null) {
app.mBMapManager = new BMapManager(this);
app.mBMapManager.init(com.miebo.android.bus.activity.CommonApplication.strKeyBaiduMap, null);
}
// 由于MapView在setContentView()中初始化,所以它需要在BMapManager初始化之后
setContentView(R.layout.bus_baidu_map);
toastUtil = new ToastUtil(this);
mMapView = (MapView) findViewById(R.id.bmapView);
mMapView.setBackgroundColor(getResources().getColor(R.color.transparent));
mMapController = mMapView.getController();
mMapController.enableClick(true);
mMapController.setZoom(curZoom);
mMapView.setBuiltInZoomControls(true);
this.intent = getIntent();
this.findview();
if ("line".equals(getIntent().getStringExtra("from"))) {
// 来着绘制线路请求
busw = getIntent().getStringExtra("busw");
xid = getIntent().getStringExtra("xid");
tvMyLocation.setText(busw + "线路图");
MKsearchBus();
} else {
// 定位并显示附近站点
dialog = ProgressDialog.show(this, "定位中...", "");
markerCenter = getResources().getDrawable(R.drawable.icon_marka);
setLocationOption();
}
}
(2)根据我当前的位置,开始处理定位结果
private void dealLocation(BDLocation location) {
mLon1 = location.getLongitude();
mLat1 = location.getLatitude();
accuracy = location.getRadius();
address = location.getAddrStr();
tvMyLocation.setText("我的位置:" + address);
curPt = new GeoPoint((int) (mLat1 * 1E6), (int) (mLon1 * 1E6));
mMapController.setCenter(curPt);
myLocationOverlay = new MyLocationOverlay(mMapView);
// 开启磁场感应传感器
myLocationOverlay.enableCompass();
LocationData locData = new LocationData();
locData.latitude = mLat1;
locData.longitude = mLon1;
locData.accuracy = accuracy;
myLocationOverlay.setData(locData);
mMapView.getOverlays().add(myLocationOverlay);
mMapView.refresh();
new loadPointAsyncTask().execute();
}
(3)地图中心位置的绘制:
protected String doInBackground(String... params) {
GeoPoint geoCenter = mMapView.getMapCenter();// 地图中心点
BaseUtil.LogII("geoCenter.getLatitudeE6() " + geoCenter.getLatitudeE6());
goLeftTop = new GeoPoint(geoCenter.getLatitudeE6() + 10000, geoCenter.getLongitudeE6() - 10000);
goLeftBottom = new GeoPoint(geoCenter.getLatitudeE6() - 10000, geoCenter.getLongitudeE6() - 10000);
goRightTop = new GeoPoint(geoCenter.getLatitudeE6() + 10000, geoCenter.getLongitudeE6() + 10000);
goRightBottom = new GeoPoint(geoCenter.getLatitudeE6() - 10000, geoCenter.getLongitudeE6() + 10000);
stationList = db.getAllStationByGeoPoint(goLeftTop.getLongitudeE6(), goRightTop.getLongitudeE6(),
goLeftTop.getLatitudeE6(), goLeftBottom.getLatitudeE6());
GeoList = new ArrayList<OverlayItem>();
list = new ArrayList<BusBaiduMapActivity.CityObject>();
if (stationList.size() > 0) {
for (int i = 0; i < stationList.size(); i++) {
double geoX = Double.valueOf(stationList.get(i).getXzhanbd());
double geoY = Double.valueOf(stationList.get(i).getYzhanbd());
int geoXX = (int) (geoX * 1E6);
int geoYY = (int) (geoY * 1E6);
GeoPoint geoPoint = new GeoPoint(geoYY, geoXX);
OverlayItem item = new OverlayItem(geoPoint, "", "");
item.setMarker(markerCenter);
GeoList.add(item);
BusBaiduMapActivity.CityObject cityObject = new BusBaiduMapActivity.CityObject();
cityObject.setLat(geoY);
cityObject.setLng(geoX);
cityObject.setName(stationList.get(i).getZhan());
list.add(cityObject);
}
}
return null;
}
(4)在地图上绘制公交点位:
// 绘制附近车站
private void drawNearOverlay() {
OverlayTest itemOverlay = new OverlayTest(markerCenter, mMapView);
for (int i = 0; i < list.size(); i++) {
BaseUtil.LogII((int) (list.get(i).getLat() * 1E6));
GeoPoint geo = new GeoPoint((int) (list.get(i).getLat() * 1E6), (int) (list.get(i).getLng() * 1E6));
OverlayItem item2 = new OverlayItem(geo, list.get(i).getName(), list.get(i).getName());
item2.setMarker(markerCenter);
item2.setTitle(list.get(i).getName());
itemOverlay.addItem(item2);
}
// 清除旧的 Overlay
mMapView.getOverlays().clear();
// 刷新地图
mMapView.getOverlays().add(myLocationOverlay);
if (list.size() > 0) {
mMapView.getOverlays().add(itemOverlay);
mMapView.refresh();
mMapController.setZoom(curZoom);
toastUtil.show("在附近查到 " + list.size() + "个站点");
}
}
系统的界面效果如下图:
相关推荐
本设计旨在探讨并实现这样一个系统,通过集成GPS定位、公交线路数据和地图服务,为用户提供实时公交线路查询、站点导航以及最优路线规划等功能。 首先,系统设计的核心是数据处理。公交查询系统需要包含全面、准确...
这个名为“基于Android的城市公交查询系统(离线)”的应用程序专为苏州市设计,旨在提供无网络环境下的公交线路查询服务。以下是对该系统及其相关技术的详细解读。 首先,Android平台是Google开发的开源操作系统,...
【基于Android的公交查询系统】是一个专为移动设备设计的应用程序,主要目标是提供便捷的公共交通路线查询服务。在Android平台上开发这样的系统,涉及到多个关键的技术领域和知识点,包括Android应用开发基础、网络...
总之,这个基于Android的手机公交线路查询系统充分利用了Java和B/S-C/S结构的优势,实现了便捷的公交信息查询和管理。它不仅提高了公众出行的效率,也为城市公共交通信息化建设提供了有力的技术支持。通过不断的优化...
总的来说,"基于Android系统的公交信息查询系统"是一个结合了Android开发技术、Java编程、UI设计等多个领域的综合性项目,旨在通过高效的程序设计和友好的用户体验,为公众提供便捷的公交出行信息查询服务。
基于Android的公交查询系统是一款方便、快捷的公交信息查询应用程序,它可以帮助用户轻松地查询公交线路、站点、车辆到站时间等信息,让用户更方便地规划出行路线。 该应用程序具有以下主要功能: 公交线路查询:...
总结,基于Android的移动公交查询系统设计与实现是一个集成了数据库、网络通信、地图服务和用户交互等多个技术领域的项目。通过合理的设计和实现,可以为用户提供便捷、准确的公交查询服务,大大提升了城市出行的...
开发基于Android平台采用Java语言和安卓自带的XML (Extensible Markup Language)布局编写的广州交通线路手机查询的应用,完成了公交、地铁价格、地图的查询及定位的功能。本文将对百度地图API的基本类进行分析,提出...
《基于Android系统的厦门公交查询系统设计》探讨了在Android平台上构建城市公交查询系统的方法。该系统结合SQLite数据库和百度地图API,利用GPS技术实现实时定位,为用户提供公交线路查询、公交站点查询和公交换乘...
同时,系统还支持实时公交位置查询,通过GPS定位技术,用户可以了解公交车的实时位置,预测到站时间,提高出行效率。 此外,换乘规划功能也是系统的一大亮点。它综合考虑了公交线路的频次、换乘次数和总耗时等因素...
"基于Android系统的智能公交查询系统的设计与实现" 本文主要介绍了基于 Android 系统的智能公交查询系统的设计与实现。该系统采用 JS 与原生交互的混合式开发技术,引入了百度地图 API 技术框架和 SSM 框架,使用 ...
基于 Android 的移动公交查询系统设计与实现样本是基于 Android 平台开发的一种移动公交查询系统,该系统旨在提供给用户一个便捷、高效的公交信息查询服务。系统的设计主要分为三个部分:用户界面、逻辑处理和数据...
"基于Android的手机公交线路查询系统" 本文概述了一种基于Android的手机公交线路查询系统,旨在为用户提供便捷的公交线路查询服务。该系统由服务器端和客户端组成,采用B/S-C/S结构,使用Java语言开发。服务器端...
本系统就是针对这一需求,提供了一个基于Android的公交线路查询系统,旨在帮助用户快速、准确地获取公交路线信息。 一、系统架构与设计 1. 用户界面:系统采用Material Design设计语言,提供清晰直观的操作界面。...
本文设计并实现了基于 Android 平台的公交信息查询系统,旨在提供一个方便、快捷、实时的公交信息服务平台,帮助乘客更好地规划出行路线,提高公交服务水平。系统使用 Java 语言编写,数据库采用 SQLITE,地图部分...
本文档主要探讨的是一个基于Android平台的手机公交线路查询系统的详细设计,其中包括系统架构、功能模块、数据库设计以及实现技术等方面。 1. 引言 随着智能手机的普及,移动应用已经成为日常生活的重要组成部分。...
城市公交查询系统是现代城市生活中的重要组成部分,尤其是在基于Android平台的实时公交查询系统中,技术的应用极大地提升了公共交通服务的效率和用户体验。本系统旨在解决因公交线路复杂、信息获取不便而引起的乘客...
本文档主要探讨了一种基于Android平台的移动公交查询系统的开发,它旨在为用户提供方便快捷的公交线路查询、站点查询以及行程规划等功能。 一、Android平台基础 Android是由Google主导开发的开源移动操作系统,广泛...
【标题】基于Android平台的西安市公交路线查询系统的设计与实现 本毕业设计旨在构建一个针对西安市的公交路线查询系统,该系统充分利用Android平台的优势,为用户提供便捷、实时的公交线路查询服务。用户能够通过该...