使用说明
1.1 软件的安装
将.api文件安装到iphone手机上,点击图标即可使用。
2.2 软件的使用
2.2.1 初始界面
软件安装好之后,在手机上显示初始界面。
2.2.2 程序主界面
主要有【课程表模块】、【新闻模块】、【学校概况模块】、【黄页模块】、【考生问答】、【班车模块】、【招生专栏模块】、【校园风采模块】、【校历模块】、【空闲教室】。如图1,图2所示:
1)点击“课程表”,即可进入查看课表信息界面。通过本功能,可以查看当前课表信息。通过底部选择相应的项,即可查看我的课表和编辑课表,在我的课表页面这可以通过滚动选项卡选责当前所要显示的课表。在编辑课表页面可以进行手势右划进行课表删除。如下图所示:
点击我的课表右侧菜单按钮,出现菜单选项“课表设置下载”,“页面刷新”,“背景图片设定”,“返回“,通过点击课表设置现在按钮进入课表下载页面,读取远程数据的课表信息,根据你的学号,和身份证后六位进行你的课表下载。刷新页面按钮,是为了防止你所更改页面的信息不能同步,起到刷新的效果。通过点击背景图片设定,进入背景图片设定状态,点击默认背景可以直接恢复到本系统自带的背景状态。点击“从相册中选择”可进入本机相册中进行选择,设置你想要的背景图片。点击“alpha”恢复显示课表信息默认透明度设置,滑动第一个滑竿,设置有课表表内容的透明度设置,滑动第二个滑竿,设置无课表内容的透明度设置,效果如图:
课表模块支持横平显示,如图
2)点击“新闻”,即可查看院的最新新闻列表,点击新闻标题回跳转因为详细信息页面。具体结果如下图所示举例:
3)点击“学校概况”,即可查看学校简介如图所示:
4)点击“黄页”,即可查看学校所有部门的办公电话,点击既可拨出,如图所示:
5)点击“考生问答”,可以浏览考生问答信息列表,点击之后可以进入详细信息页面内容如下图
6)点击“班车”,可以阅览班车信息,上部选项卡选择星期几,下部分选项卡选择工作日还是休息日,点击具体班车站点信息会显示站点在地图上的具体位置,页面内容如图所示:
7)点击“招生专栏”,可以浏览招生专栏信息列表,点击之后可以进入详细信息页面内容如下图:
8)点击“校园风采”,可以浏览校园风采信息列表,点击之后可以进入详细信息页面内容如下
9)点击“校历”,可以浏览校历信息,拖动底部滚动条进行切换月份,点击之后可以进入详细信息页面内容如下图:
package com.example.IHXCI;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.map.LocationData;
import com.baidu.mapapi.map.MKEvent;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationOverlay;
import com.baidu.mapapi.map.MyLocationOverlay.LocationMode;
import com.baidu.mapapi.map.PopupClickListener;
import com.baidu.mapapi.map.PopupOverlay;
import com.baidu.mapapi.search.MKSearch;
import com.baidu.platform.comapi.basestruct.GeoPoint;
public class Baiduditu extends Activity {
public static final String strKey = "Ng91TYw8mnDnUrgVMil8nUYG";
// kzLfrTANnchHWUEMEUC5v8ZL
// 6a099fc3b1a227b70e0d6a924c9937a7
BMapManager mBMapMan = null;
MapView mMapView = null;
Button wodeweizhi;
Button sousuo;
Button gongjiaoxianlu;
Button tuichu;
Intent intent;
private MyLocationOverlay mLocationOverlay = null;
locationOverlay myLocationOverlay = null;
// private LocationListener locationListener;
LocationClient mLocClient;
MapController mMapController;
LocationData locData = null;
GeoPoint pt;
public MyLocationListenner myListener = new MyLocationListenner();
// 弹出泡泡图层
private PopupOverlay pop = null;// 弹出泡泡图层,浏览节点时使用
private TextView popupText = null;// 泡泡view
private View viewCache = null;
private enum E_BUTTON_TYPE {
LOC, COMPASS, FOLLOW
}
private E_BUTTON_TYPE mCurBtnType;
MKSearch mSearch = null; // 搜索模块,也可去掉地图模块独立使用
public static String weizhixinxi;
// --------------------------------------------------------------------------------------
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBMapMan = new BMapManager(getApplication());
mBMapMan.init(strKey, new MKGeneralListener() {
// 授权错误的时候调用的回调函数
@Override
public void onGetPermissionState(int iError) {
if (iError == MKEvent.ERROR_PERMISSION_DENIED) {
Toast.makeText(getApplication(), "API Key错误,请检查!",
Toast.LENGTH_LONG).show();
}
}
// 一些网络状态的错误处理回调函数
@Override
public void onGetNetworkState(int iError) {
if (iError == MKEvent.ERROR_NETWORK_CONNECT) {
Toast.makeText(getApplication(), "您的网络出错啦!",
Toast.LENGTH_LONG).show();
}
}
});
// 注意:请在试用setContentView前初始化BMapManager对象,否则会报错
setContentView(R.layout.activity_baiduditu);
intent = getIntent();
mMapView = (MapView) findViewById(R.id.bmapsView);
// 隐藏自带的地图缩放控件
// mMapView.setBuiltInZoomControls(false);
wodeweizhi = (Button) findViewById(R.id.wdwz);
sousuo = (Button) findViewById(R.id.sousuo);
gongjiaoxianlu = (Button) findViewById(R.id.gongjiaoxianlu);
tuichu = (Button) findViewById(R.id.tuichu);
mCurBtnType = E_BUTTON_TYPE.LOC;
mMapView.setBuiltInZoomControls(true);
// 设置启用内置的缩放控件
// 得到mMapView的控制权,可以用它控制和驱动平移和缩放
GeoPoint point = new GeoPoint((int) (45.882615 * 1E6),
(int) (126.513214 * 1E6));
// 华夏坐标 -->126.513214,45.882615
// 用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)
mMapController = mMapView.getController();
mMapController.setCenter(point);// 设置地图中心点
mMapController.setZoom(18);// 设置地图zoom级别
mMapView.getController().enableClick(true);
// 显示交通地图
// mMapView.setTraffic(true);
// 显示卫星地图
// mMapView.setSatellite(true);
// 创建 弹出泡泡图层
createPaopao();
mLocClient = new LocationClient(Baiduditu.this);
locData = new LocationData();
mLocClient.registerLocationListener(myListener);
mLocClient.setAK(strKey);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);// 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setAddrType("all");// 接受所有信息以便反解析坐标的地理信息
option.setScanSpan(1000);
mLocClient.setLocOption(option);
// 定位图层初始化
myLocationOverlay = new locationOverlay(mMapView);
// 设置定位数据
myLocationOverlay.setData(locData);
// 添加定位图层
mMapView.getOverlays().add(myLocationOverlay);
myLocationOverlay.enableCompass();
myLocationOverlay.setMarker(getResources().getDrawable(
R.drawable.icon_geo));
wodeweizhi.setOnClickListener(new WeizhiOnClick());
tuichu.setOnClickListener(new TuichuOnClick());
// 其他按钮的监听事件 等待处理
}
// ------------------------------------------------------------------------------
/**
* 定位按钮监听事件
*/
class WeizhiOnClick implements OnClickListener {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
// 修改定位数据后刷新图层生效
mLocClient.start();
// 修改定位数据后刷新图层生效
mMapView.refresh();
}
}
/**
* 定位按钮监听事件
*/
class TuichuOnClick implements OnClickListener {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
intent.setClass(Baiduditu.this, Main.class);
Baiduditu.this.startActivity(intent);
finish();
}
}
/**
* 创建弹出泡泡图层
*/
public void createPaopao() {
viewCache = getLayoutInflater()
.inflate(R.layout.custom_text_view, null);
popupText = (TextView) viewCache.findViewById(R.id.textcache);
// 泡泡点击响应回调
PopupClickListener popListener = new PopupClickListener() {
@Override
public void onClickedPopup(int index) {
Log.v("click", "clickapoapo");
pop.hidePop();
}
};
pop = new PopupOverlay(mMapView, popListener);
MyLocationMapView.pop = pop;
}
/**
* 定位SDK监听函数
*/
public class MyLocationListenner implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
if (location == null)
return;
locData.latitude = location.getLatitude();
locData.longitude = location.getLongitude();
weizhixinxi = location.getAddrStr();
System.out.println(weizhixinxi);
// 如果不显示定位精度圈,将accuracy赋值为0即可
locData.accuracy = location.getRadius();
locData.direction = location.getDerect();
// 更新定位数据
myLocationOverlay.setData(locData);
// 更新图层数据执行刷新后生效
mMapView.refresh();
// 是手动触发请求或首次定位时,移动到定位点
// 移动地图到定位点
Log.d("LocationOverlay", "receive location, animate to it");
mMapController.animateTo(new GeoPoint(
(int) (locData.latitude * 1e6),
(int) (locData.longitude * 1e6)));
myLocationOverlay.setLocationMode(LocationMode.FOLLOWING);
mCurBtnType = E_BUTTON_TYPE.FOLLOW;
mLocClient.stop();
System.out.println(locData.latitude + "+" + locData.longitude);
}
@Override
public void onReceivePoi(BDLocation arg0) {
// TODO Auto-generated method stub
if (arg0 == null) {
return;
}
}
}
// 继承MyLocationOverlay重写dispatchTap实现点击处理
public class locationOverlay extends MyLocationOverlay {
public locationOverlay(MapView mapView) {
super(mapView);
// TODO Auto-generated constructor stub
}
@Override
protected boolean dispatchTap() {
// TODO Auto-generated method stub
// 处理点击事件,弹出泡泡
popupText.setBackgroundResource(R.drawable.popup);
popupText.setText(weizhixinxi);
pop.showPopup(BMapUtil.getBitmapFromView(popupText), new GeoPoint(
(int) (locData.latitude * 1e6),
(int) (locData.longitude * 1e6)), 8);
return true;
}
}
/**
* 修改位置图标
*
* @param marker
*/
public void modifyLocationOverlayIcon(Drawable marker) {
// 当传入marker为null时,使用默认图标绘制
myLocationOverlay.setMarker(marker);
// 修改图层,需要刷新MapView生效
mMapView.refresh();
}
@Override
protected void onDestroy() {
mMapView.destroy();
if (mBMapMan != null) {
mBMapMan.destroy();
mBMapMan = null;
}
if (mLocClient != null) {
mLocClient.start();
}
super.onDestroy();
}
@Override
protected void onPause() {
mMapView.onPause();
if (mBMapMan != null) {
mBMapMan.stop();
}
super.onPause();
}
@Override
protected void onResume() {
mMapView.onResume();
if (mBMapMan != null) {
mBMapMan.start();
}
super.onResume();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
intent.setClass(Baiduditu.this, Main.class);
Baiduditu.this.startActivity(intent);
finish();
}
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.baiduditu, menu);
return true;
}
}
/**
* 继承MapView重写onTouchEvent实现泡泡处理操作
*
* @author hejin
*
*/
class MyLocationMapView extends MapView {
static PopupOverlay pop = null;// 弹出泡泡图层,点击图标使用
public MyLocationMapView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MyLocationMapView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyLocationMapView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
System.out.println("------------+++++++++++++---------------");
System.out.println("------------+++++++++++++---------------");
System.out.println("------------+++++++++++++---------------");
if (!super.onTouchEvent(event)) {
// 消隐泡泡
if (pop != null && event.getAction() == MotionEvent.ACTION_UP)
pop.hidePop();
}
return true;
}
}