高校基于百度地图的手机应用

2016-01-09 12:55王述聪李哲
电脑知识与技术 2015年30期
关键词:详细信息覆盖物综合楼

王述聪+李哲

摘要:学校里经常会有同学问某某楼怎么走,某某教室怎么走,如果有一款手机app能帮助大家找到校园里要去的地方,那么会给广大师生带来很大的帮助。百度地图api是百度公司给开发人员提供的地图调用接口,通过对其编程可以实现很多自定义功能,如定位、导航、检索、全景,给我们的生活带来便利。

关键词:手机应用;android;地图开发;百度地图;高校

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)30-0071-02

Universities Baidu Map-based Mobile Applications

WANG Shu-hong, LI Zhe

(College of New Technology Experiment Center,Hubei College of Engineering, Xiaogan 432100, China)

Abstract: There is often a certain floor school students asked how to go, how to get a certain classroom, if there is a phone app can help you find the place to go on campus, it will give teachers and students a great deal of help. Baidu Baidu's map api is to provide developers with a map call interface, can achieve a lot through programmed custom features, such as positioning, navigation, retrieval, panoramic, give our life a lot easier.

Key words: mobile applications; android, map development; Baidu map; universities

新来的大学生有这样一个需求,他们需要知道学校的教室所在地,或者教学单位、活动场所等所在地。高校里的手绘地图包含有这些信息,给学生带来了便利,帮助了他们,但是手绘地图一般只画出了楼房的位置,具体的教室、实验室、语音室、机房等的位置并不知道,而且手绘地图不能方便标识出所有的地理位置。另一个可以查阅的地方是百度地图或者其他电子地图,但它们也不能精确到教室等详细位置。百度地图是百度提供的一项网络地图搜索服务,在百度地图里,用户可以查询街道、商场、楼盘的地理位置,也可以找到离您最近的所有餐馆、学校、银行、公园等等。本文将介绍基于百度地图api的开发,用来解决上文中提到的问题,主要讲到的是定位和导航这两个方面。

1 定位

要标识出地图上的POI,先要从地图中采集到所要显示位置的经纬度。

//双击地图位置采集经纬度, onCreate方法里加上地图的双击事件处理程序,

//mBaiduMap是界面上地图的id

mBaiduMap.setOnMapDoubleClickListener(new OnMapDoubleClickListener() {

@Override

public void onMapDoubleClick(LatLng arg0) {

//获得地图想要标识位置的经纬度

System.out.println(arg0.toString());

}

});

2 加载覆盖物

通过经纬度在地图上标识覆盖物,同时显示详细信息。MarkerOptions类用来生成覆盖物,InfoWindow类用来给覆盖物显示详细信息。

public void initOverlay() {

LatLng llA = new LatLng(30.939456119340765, 113.91385220883149);

LatLng llB = new LatLng(30.940168518053756, 113.9124867844563);

LatLng llC = new LatLng(30.941291309486694, 113.91140881784435);

MarkerOptions ooA = new MarkerOptions().position(llA).icon(bdA).title("同大综合楼");

MarkerOptions ooB = new MarkerOptions().position(llB).icon(bdA).title("同大科技楼");

MarkerOptions ooC = new MarkerOptions().position(llC).icon(bdA).title("同大生科楼");

mMarkerzhl = (Marker)(mBaiduMap.addOverlay(ooA));

mMarkerkjl = (Marker)(mBaiduMap.addOverlay(ooB));

mMarkerskl = (Marker)(mBaiduMap.addOverlay(ooC));

Button button = new Button(getApplicationContext());

//加上详细信息

button.setText("同大综合楼:\n2楼(机房1-3)\n3楼(机房4、语音室3-5)");

button.setTextColor(Color.BLACK);

button.setBackgroundResource(R.drawable.popup);

mInfoWindow = new InfoWindow(button.getRootView(), llA, -90);

mBaiduMap.showInfoWindow(mInfoWindow);

}

3 步行导航

显示目的地到学校的步行线路。需要实现OnGetRoutePlanResultListener接口,实现onGetWalkingRouteResult方法。SearchButtonProcess是在onGetWalkingRouteResult中调用的方法。Search为百度地图搜索相关类RoutePlanSearch的实例对象。

public void SearchButtonProcess() {

//重置浏览节点的路线数据

route = null;

mBaiduMap.clear();

//设置起终点信息,对于tranist search 来说,城市名无意义

PlanNode stNode = PlanNode.withCityNameAndPlaceName("孝感", "湖北工程学院南门");

PlanNode enNode = PlanNode.withCityNameAndPlaceName("孝感", "湖北工程学院新技术学院");

//实际使用中请对起点终点城市进行正确的设定

if (v.getId() == R.id.drive) { //驾车线路

mSearch.drivingSearch((new DrivingRoutePlanOption())

.from(stNode)

.to(enNode));

} else if (v.getId() == R.id.transit) { //公交线路

mSearch.transitSearch((new TransitRoutePlanOption())

.from(stNode)

.city("北京")

.to(enNode));

} else if (v.getId() == R.id.walk) { //步行线路

mSearch.walkingSearch((new WalkingRoutePlanOption())

.from(stNode)

.to(enNode));

}

}

1

运行如图:显示了同大综合楼所在位置,同时也显示了同大综合楼各楼层含有哪些教室的信息。同理可以显示学校内所有单位的详细信息。百度地图还提供有全景、搜索周边信息等功能,这些api免费提供给开发者调用。

参考文献:

[1] Reto Meier. Android 4高级编程[M]. 北京: 清华大学出版社.

猜你喜欢
详细信息覆盖物综合楼
不同覆盖物对丝栗栲种子发芽特性的影响
讨论不同覆盖物处理对杂草和容器苗生长的影响
有机覆盖物在太原市绿地维护中的应用前景
请作者在投稿的论文中标注详细信息
2021年高考文体写作系列3:咨询信
BIM技术在某大型商业综合楼施工中的应用
公告
某综合楼内气体灭火系统设计
浅析云铜时代之窗超高层综合楼建筑防火设计