代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
地图定位 绘制公交线路
作者:
Dezai.CN
/ 发布于
2013/6/17
/
560
Button mBtnSearch = null; // 搜索按钮 MapView mMapView = null; // 地图View MKSearch mSearch = null; // 搜索模块,也可去掉地图模块独立使用 String mCityName = null; LocationListener loc_listener; App app = null; static boolean flag = false; static Thread thread; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.buslinesearch); app = (App) this.getApplication(); if (app.mBMapMan == null) { app.mBMapMan = new BMapManager(getApplication()); app.mBMapMan.init(app.mStrKey, new App.MyGeneralListener()); } app.mBMapMan.start(); // 如果使用地图SDK,请初始化地图Activity super.initMapActivity(app.mBMapMan); mMapView = (MapView) findViewById(R.id.bmapView); mMapView.setBuiltInZoomControls(true); // 设置在缩放动画过程中也显示overlay,默认为不绘制 mMapView.setDrawOverlayWhenZooming(true); mMapView.setBuiltInZoomControls(true); // 初始化搜索模块,注册事件监听 MapController mMapController = mMapView.getController(); // 得到mMapView的控制权,可以用它控制和驱动平移和缩放 GeoPoint point = new GeoPoint((int) (39.915 * 1E6), (int) (116.404 * 1E6)); // 用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6) mMapController.setCenter(point); // 设置地图中心点 mMapController.setZoom(15); // 设置地图zoom级别 mSearch = new MKSearch(); mSearch.init(app.mBMapMan, new MKSearchListener() { public void onGetPoiResult(MKPoiResult res, int type, int error) { // 错误号可参考MKEvent中的定义 if (error != 0 || res == null) { Toast.makeText(BuslineSearch.this, "抱歉,未找到结果", Toast.LENGTH_LONG).show(); return; } // System.out.println(res.toString()); // 找到公交路线poi node MKPoiInfo curPoi = null; int totalPoiNum = res.getNumPois(); for (int idx = 0; idx < totalPoiNum; idx++) { Log.d("busline", "the busline is " + idx); curPoi = res.getPoi(idx); if (2 == curPoi.ePoiType) { break; } } mSearch.busLineSearch(mCityName, curPoi.uid); } public void onGetDrivingRouteResult(MKDrivingRouteResult res, int error) { } public void onGetTransitRouteResult(MKTransitRouteResult res, int error) { res.getPlan(0).getDistance(); } public void onGetWalkingRouteResult(MKWalkingRouteResult res, int error) { } public void onGetAddrResult(MKAddrInfo res, int error) { } public void onGetBusDetailResult(MKBusLineResult result, int iError) { if (iError != 0 || result == null) { Toast.makeText(BuslineSearch.this, "抱歉,未找到结果", Toast.LENGTH_LONG).show(); return; } // result.getBusRoute().get // result.getBusRoute().getStart().toString(); CustomRouteOverLay routeOverlay = new CustomRouteOverLay( BuslineSearch.this, mMapView); // 此处仅展示一个方案作为示例 System.out.println(routeOverlay.size()); routeOverlay.setData(result.getBusRoute()); mMapView.getOverlays().clear(); System.out.println(mMapView.getOverlays().size()); mMapView.getOverlays().add(routeOverlay); mMapView.invalidate(); mMapView.getController().animateTo( result.getBusRoute().getStart()); } @Override public void onGetSuggestionResult(MKSuggestionResult res, int arg1) { // TODO Auto-generated method stub } }); // mLocationManager.requestLocationUpdates(listener); // 注册定位事件 loc_listener = new LocationListener() { @Override public void onLocationChanged(Location location) { if (location != null) { String strLog = String.format("您当前的位置:\r\n" + "纬度:%f\r\n" + "经度:%f", location.getLongitude(), location.getLatitude()); flag = true; Drawable marker = getResources() .getDrawable(R.drawable.ic_launcher); final GeoPoint p = new GeoPoint( (int) (location.getLatitude() * 1E6), (int) (location.getLongitude() * 1E6)); CustomOverlayItem item = new CustomOverlayItem(marker, BuslineSearch.this, p, "我的位置", "", false); mMapView.getOverlays().add(item); mMapView.getController().animateTo(p); } } }; // 设定搜索按钮的响应 mBtnSearch = (Button) findViewById(R.id.search); OnClickListener clickListener = new OnClickListener() { public void onClick(View v) { SearchButtonProcess(v); } }; mBtnSearch.setOnClickListener(clickListener); } void SearchButtonProcess(View v) { if (mBtnSearch.equals(v)) { mMapView.getOverlays().clear(); mMapView.getOverlays().removeAll(mMapView.getOverlays()); mMapView.invalidate(); EditText editCity = (EditText) findViewById(R.id.city); EditText editSearchKey = (EditText) findViewById(R.id.searchkey); mCityName = editCity.getText().toString(); mSearch.poiSearchInCity(mCityName, editSearchKey.getText() .toString()); } } @Override protected void onPause() { if (null == app) app = (App) this.getApplication(); app.mBMapMan.getLocationManager().removeUpdates(loc_listener); app.mBMapMan.stop(); super.onPause(); } @Override protected void onResume() { if (null == app) app = (App) this.getApplication(); app.mBMapMan.start(); super.onResume(); app.mBMapMan.getLocationManager().requestLocationUpdates(loc_listener);// 定位 } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); }
试试其它关键字
地图定位
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3