我驾车地图用手机导行地图

最近浏览论坛:
关注/收藏的论坛:
热门论坛推荐:
验证码:输入右侧的字母和数字
下次自动登录
还未注册用户?&&&
您的赞赏是对楼主的鼓励!
1~200元之间
金额须在1~200元之间
去车系频道
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
自动加载图片
08:38:40 | 来自
开车用导航回老家手机导航哪个导航比较精准?
开车用导航回老家手机导航哪个导航比较精准?
引用 kunshan-13 08:38:40 发表于 主楼 的内容:
禁止发布色情、反动及广告内容!
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
完成汽车之家·知道解答问答任务,并被提问者采纳为满意回答。并符合升级规则,即可得解答达人二级勋章
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人三级勋章。
完成汽车之家·知道解答问答任务,并被提问者采纳为满意回答。并符合升级规则,即可得解答达人四级勋章
完成汽车之家·知道解答问答任务,并被提问者采纳为满意回答。并符合升级规则,即可得解答达人五级勋章
手机导航好,更新适时快捷。车载导航版本过于老旧、更新较慢。自己在手机里下载好百度导航离线使用不费一点流量
引用 蜗牛开大车
09:05:46 发表于 7楼 的内容:
禁止发布色情、反动及广告内容!
所属:爱车:
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
参加【2016北京车展】好礼已备,答题高手请进。赢取 “北京车展―答题高手”勋章。
参与问答【“愚”乐嗨翻天】活动,赢限量“愚”乐勋章。
完成汽车之家·知道解答问答任务,并被提问者采纳为满意回答。并符合升级规则,即可得解答达人二级勋章
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人三级勋章。
08:39:45 | 来自
08:38:40 发表在 开车用导航回老家手机导航哪个导航比较精准?一样吧,手机有实视路况
引用 lia308i308
08:39:45 发表于 1楼 的内容:
禁止发布色情、反动及广告内容!
所属:爱车:
上传购车发票,点评购车服务感受,通过工作人员审核,特授予【真实报价员】专属勋章。
发表500字以上推荐口碑,点评客观公正,通过工作人员审核,特授予【推荐口碑】专属勋章。
参与汽车之家10周年“真交情,十年如初”活动,获此勋章,感谢一路上有你的陪伴。
参加汽车之家论坛App发帖活动,发表带地理定位的新帖,可赢取“出位达人”勋章一枚。
参与汽车之家质量评价调研,反馈真实质量情况,特授予汽车之家“质量评价员”称号,并奖励专属勋章。
建议高德地图和百度地图,目前做的比较好的,最好把离线地图也下了。
醉酒惜花颜,若相守亦不离
引用 喜欢发呆的强子
08:39:56 发表于 2楼 的内容:
禁止发布色情、反动及广告内容!
所属:爱车:
发表500字以上推荐口碑,点评客观公正,通过工作人员审核,特授予【推荐口碑】专属勋章。
发表追加口碑,评价500字以上,通过编辑审核为优质追加口碑,特此奖励优秀追加口碑勋章,以示鼓励。
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
完成汽车之家·知道解答问答任务,并被提问者采纳为满意回答。并符合升级规则,即可得解答达人二级勋章
参与汽车之家10周年“真交情,十年如初”活动,获此勋章,感谢一路上有你的陪伴。
手机导航?用百度地图吧。
家穷人丑,农村户口;二手黄V,也能越野!
引用 微越野
08:40:29 发表于 3楼 的内容:
禁止发布色情、反动及广告内容!
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
08:41:55 | 来自
08:39:56 发表在 建议高德地图和百度地图,目前做的比较好的,最好把离线地图也下了。反正比车载导航强多了
引用 kunshan-13 08:41:55 发表于 4楼 的内容:
禁止发布色情、反动及广告内容!
发表1000字以上精华口碑,点评生动,以理服人,通过工作人员审核,特授予【精华口碑】专属勋章。
参加2014年3月自驾游调查前5000名提交投票的用户,特此颁发此勋章。
发表1500字以上满级口碑,观点独到,篇幅惊人,通过工作人员审核,特授予【满级口碑】专属勋章。
发布用车问题,分享用车经验,即可获得知道上线勋章。
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
城市:百度比较靠谱,高德在线导航也很靠谱长途和农村:高德在线、高德离线都可以
自由自在……
引用 猴仗剑走天涯
08:45:37 发表于 5楼 的内容:
禁止发布色情、反动及广告内容!
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
完成汽车之家·知道解答问答任务,并被提问者采纳为满意回答。并符合升级规则,即可得解答达人二级勋章
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人三级勋章。
完成汽车之家·知道解答问答任务,并被提问者采纳为满意回答。并符合升级规则,即可得解答达人四级勋章
08:55:48 | 来自
手机高德导航先模拟一下还可以增加沿途点自己控制路线。高德地图也行。
引用 愤怒的葫芦
08:55:48 发表于 6楼 的内容:
禁止发布色情、反动及广告内容!
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
完成汽车之家·知道解答问答任务,并被提问者采纳为满意回答。并符合升级规则,即可得解答达人二级勋章
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人三级勋章。
上传购车发票,点评购车服务感受,通过工作人员审核,特授予【真实报价员】专属勋章。
参加汽车之家论坛【闹元宵,猜灯谜】活动,报名猜灯谜,赢取汽车之家 “灯谜达人”勋章。
手机的方便
引用 辽M哈哈哈
12:20:48 发表于 8楼 的内容:
禁止发布色情、反动及广告内容!
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
12:43:15 | 来自
09:05:46 发表在 手机导航好,更新适时快捷。车载导航版本过于老旧、更新较慢。自己在手机里下载好百度导航离线使用不费一点流量嗯嗯
引用 清新qwe
12:43:15 发表于 9楼 的内容:
禁止发布色情、反动及广告内容!
所属:爱车:
上传购车发票,点评购车服务感受,通过工作人员审核,特授予【真实报价员】专属勋章。
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
完成汽车之家·知道解答问答任务,并被提问者采纳为满意回答。并符合升级规则,即可得解答达人二级勋章
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人三级勋章。
12:50:41 | 来自
引用 zhao26zhi
12:50:41 发表于 10楼 的内容:
禁止发布色情、反动及广告内容!
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
12:55:30 | 来自
08:38:40 发表在 开车用导航回老家手机导航哪个导航比较精准?高德地图。百度更新慢,有的新修路都不显示
引用 带刀侍卫886
12:55:30 发表于 11楼 的内容:
禁止发布色情、反动及广告内容!
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
完成汽车之家·知道解答问答任务,并被提问者采纳为满意回答。并符合升级规则,即可得解答达人二级勋章
上传购车发票,点评购车服务感受,通过工作人员审核,特授予【真实报价员】专属勋章。
分享购车价格,点评购车服务感受,通过工作人员审核,特授予【家de报价员】专属勋章。
21:37:21 | 来自
凯立德导航很好用。提示很准确!一一
引用 16-06-13 21:37:21 发表于 12楼 的内容:
禁止发布色情、反动及广告内容!
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
22:21:40 | 来自
引用 PDS宝
22:21:40 发表于 13楼 的内容:
禁止发布色情、反动及广告内容!
所属:爱车:
上传购车发票,点评购车服务感受,通过工作人员审核,特授予【真实报价员】专属勋章。
完成汽车之家·知道升级任务,解答问答,并被提问者采纳为满意回答,可得解答达人一级勋章
参与汽车之家质量评价调研,反馈真实质量情况,特授予汽车之家“质量评价员”称号,并奖励专属勋章。
参与问答【“愚”乐嗨翻天】活动,赢限量“愚”乐勋章。
完成汽车之家·知道解答问答任务,并被提问者采纳为满意回答。并符合升级规则,即可得解答达人二级勋章
11:27:42 | 来自
手机导航地图更新快,比车上的好用,百度的地图到有些路口有模拟图片,比较方便
引用 6-06-14 11:27:42 发表于 14楼 的内容:
禁止发布色情、反动及广告内容!
正在提交回复,请稍候...
mainTopic.xRender=YES
楼主有更新时通知我
已取消此帖的收藏
您已被楼主屏蔽,不能回复该帖子使用百度地图API实现驾车导航
进入应用后首先显示蓝色点为当前位置,可以输入目的地来形成导航线路(图1),也可以点选地图上任意点来形成导航线路(图2,3),选定点后,在地图上会标注红色定位点,点击开始导航按钮后便会形成最佳驾车线路。
接下来看看实现步骤:
首先是工程结构
其中libs下面是申请百度开发者后到地图API下下载的地图支持包并导入工程,这里不再细说。
然后是布局文件:
&?xml version=&1.0& encoding=&utf-8&?&&
&LinearLayout xmlns:android=&/apk/res/android&&
&&& android:layout_width=&fill_parent&&
&&& android:layout_height=&fill_parent&&
&&& android:orientation=&vertical& &&
&&& &LinearLayout&
&&&&&&& android:layout_width=&fill_parent&&
&&&&&&& android:layout_height=&wrap_content&&
&&&&&&& android:orientation=&horizontal& &&
&&&&&&& &TextView&
&&&&&&&&&&& android:layout_width=&wrap_content&&
&&&&&&&&&&& android:layout_height=&wrap_content&&
&&&&&&&&&&& android:text=&目的地:&&
&&&&&&&&&&& android:textSize=&17sp& /&&
&&&&&&& &EditText&
&&&&&&&&&&& android:id=&@+id/et_destination&&
&&&&&&&&&&& android:layout_width=&fill_parent&&
&&&&&&&&&&& android:hint=&输入目的地名称或在地图上点选&&
&&&&&&&&&&& android:textSize=&14sp&&
&&&&&&&&&&& android:layout_height=&wrap_content& /&&
&&& &/LinearLayout&&
&&& &LinearLayout&
&&&&&&& android:layout_width=&fill_parent&&
&&&&&&& android:layout_height=&wrap_content& &&
&&&&&&& &Button&
&&&&&&&&&&& android:id=&@+id/btn_navi&&
&&&&&&&&&&& android:layout_width=&fill_parent&&
&&&&&&&&&&& android:layout_height=&wrap_content&&
&&&&&&&&&&& android:layout_weight=&1&&
&&&&&&&&&&& android:text=&开始导航& /&&
&&&&&&& &Button&
&&&&&&&&&&& android:id=&@+id/btn_clear&&
&&&&&&&&&&& android:layout_width=&fill_parent&&
&&&&&&&&&&& android:layout_height=&wrap_content&&
&&&&&&&&&&& android:layout_weight=&1&&
&&&&&&&&&&& android:text=&清除路线& /&&
&&& &/LinearLayout&&
&&& &com.baidu.mapapi.MapView&
&&&&&&& android:id=&@+id/bmapsView&&
&&&&&&& android:layout_width=&fill_parent&&
&&&&&&& android:layout_height=&fill_parent&&
&&&&&&& android:clickable=&true& /&&
&/LinearLayout&&
然后是实现自定义的地图图层MyItemizedOverlay.java,这个类的作用是实现可点击地图图层的作用,点击地图后,便可以显示当前位置的经纬度,并可设置为目的地。
&* 自定义图层
&* @author Ryan
public class MyItemizedOverlay extends ItemizedOverlay&OverlayItem& {&
&&& private ArrayList&OverlayItem& mOverlays = new ArrayList&OverlayItem&();&&&&&
&&& private C&
&&& public MyItemizedOverlay(Context context,Drawable drawale) {&
&&&&&&& super(boundCenterBottom(drawale));&&&&&&&
&&&&&&& this.context=&
&&& @Override&
&&& protected OverlayItem createItem(int i) {&
&&&&&&& return mOverlays.get(i);&
&&& @Override&
&&& public int size() {&
&&&&&&& return mOverlays.size();&
&&& // 点击地图标注显示的内容&
&&& @Override&
&&& protected boolean onTap(int index) {&
&&&&&&& //这个方法的重写弹出信息等&
&&& @Override&
&&& public void draw(Canvas canvas, MapView mapView, boolean shadow) {&
&&&&&&& super.draw(canvas, mapView, shadow);&
&&& // Define a method in order to add new OverlayItems to our ArrayList&
&&& public void addOverlay(OverlayItem overlay) {&
&&&&&&& // add OverlayItems&
&&&&&&& mOverlays.add(overlay);&
&&&&&&& populate();&
&&& //该方法的重写可以相应点击图标的区域内还是外&
&&& @Override&
&&& public boolean onTap(GeoPoint p, MapView mapView) {&
&&&&&&& final SharedPreferences sharedPreferences = context.getSharedPreferences(&navigation_pre&, Context.MODE_WORLD_WRITEABLE);&
&&&&&&& //p获取的经纬度数据是整型变量,需要转换为float类型&
&&&&&&& final float lat=p.getLatitudeE6();&
&&&&&&& final float lon=p.getLongitudeE6();&
&&&&&&& final MapView map = mapV&
&&&&&&& float latitude = sharedPreferences.getFloat(&lat&, 0);&
&&&&&&& if (latitude == 0) {&
&&&&&&&&&&& AlertDialog.Builder builder = new AlertDialog.Builder(this.context);&
&&&&&&&&&&& builder.setTitle(&设置目的地&);&
&&&&&&&&&&& builder.setMessage(&设置选中的点为目的地吗?&);&
&&&&&&&&&&& builder.setPositiveButton(&确定&,new OnClickListener() {&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& @Override&
&&&&&&&&&&&&&&& public void onClick(DialogInterface dialog, int which) {&
&&&&&&&&&&&&&&&&&&& List&Overlay& overlays = map.getOverlays();&
&&&&&&&&&&&&&&&&&&& GeoPoint gpoint = new GeoPoint((int)lat,(int)lon);&
&&&&&&&&&&&&&&&&&&& OverlayItem overlayitem = new OverlayItem(gpoint, &title&, &content&);&
&&&&&&&&&&&&&&&&&&& Drawable drawale = context.getResources().getDrawable(R.drawable.current_mark);&
&&&&&&&&&&&&&&&&&&& MyItemizedOverlay iconOverlay = new MyItemizedOverlay(context,drawale);&
&&&&&&&&&&&&&&&&&&& // 添加图层&
&&&&&&&&&&&&&&&&&&& iconOverlay.addOverlay(overlayitem);&
&&&&&&&&&&&&&&&&&&& overlays.add(iconOverlay);&
&&&&&&&&&&&&&&&&&&& map.getController().animateTo(gpoint);&
&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& Editor editor = sharedPreferences.edit();&
&&&&&&&&&&&&&&&&&&& editor.putFloat(&lat&, lat);&
&&&&&&&&&&&&&&&&&&& editor.putFloat(&lon&, lon);&
&&&&&&&&&&&&&&&&&&& mit();&
&&&&&&&&&&&&&&&&&&& Toast.makeText(context, &纬度:&+lat / 1E6+&\n经度:&+lon / 1E6, Toast.LENGTH_SHORT).show();&&&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&& });&
&&&&&&&&&&& builder.setNegativeButton(&取消&, null);&
&&&&&&&&&&& builder.create().show();&
&&&&&&& }else {&
//&&&&&&&&& AlertDialog.Builder builder = new AlertDialog.Builder(this.context);&
//&&&&&&&&& builder.setTitle(&设置目的地&);&
//&&&&&&&&& builder.setMessage(&已经设置过线路,请先点击清除路线按钮清除当前路线&);&
//&&&&&&&&& builder.setNegativeButton(&确定&, null);&
//&&&&&&&&& builder.create().show();&
&&&&&&&&&&& Toast.makeText(context, &已经设置过线路,请先点击清除路线按钮清除当前路线&,Toast.LENGTH_SHORT).show();&&&
&&&&&&&&&&&&&
&&&&&&& }&
&&&&&&& return super.onTap(p, mapView);&
最后是主Activity实现类,注释中有详细说明:
public class NavigationDemoActivity extends MapActivity {&
&&& //Map key&
&&& private String mMapKey = &你的MapKey,到百度开发者官网申请&;&
&&& private EditText destinationEditText =&
&&& private Button startNaviButton =&
&&& private Button clearButton =&
&&& private MapView mapView =&
&&& private BMapManager mMapManager =&
&&& private MyLocationOverlay myLocationOverlay =&
&&& //onResume时注册此listener,onPause时需要Remove,注意此listener不是Android自带的,是百度API中的&
&&& private LocationListener locationListener =&
&&& //搜索模块&
&&& private MKSearch searchModel =&
&&& private GeoPoint pt =&
&&& private SharedPreferences sharedP&
&&& @Override&
&&& public void onCreate(Bundle savedInstanceState) {&
&&&&&&& super.onCreate(savedInstanceState);&
&&&&&&& requestWindowFeature(Window.FEATURE_NO_TITLE);&
&&&&&&& setContentView(R.layout.main);&
&&&&&&& //弹出使用说明对话框&
&&&&&&& showIntroduceDialog();&
&&&&&&& sharedPreferences = this.getSharedPreferences(&navigation_pre&, Context.MODE_WORLD_WRITEABLE);&
&&&&&&& destinationEditText = (EditText) this.findViewById(R.id.et_destination);&
&&&&&&& startNaviButton = (Button) this.findViewById(R.id.btn_navi);&
&&&&&&& clearButton = (Button) this.findViewById(R.id.btn_clear);&
&&&&&&& //初始化地图管理器&
&&&&&&& mMapManager = new BMapManager(getApplication());&
&&&&&&& mMapManager.init(mMapKey, new MyGeneralListener());&
&&&&&&& super.initMapActivity(mMapManager);&
&&&&&&& mapView = (MapView) this.findViewById(R.id.bmapsView);&
&&&&&&& //设置启用内置的缩放控件&
&&&&&&& mapView.setBuiltInZoomControls(true);&&&
&&&&&&& //设置在缩放动画过程中也显示overlay,默认为不绘制&
//&&&&&&& mapView.setDrawOverlayWhenZooming(true);&
&&&&&&& //设置初始化地图的缩放级别&
&&&&&&& mapView.getController().setZoom(16);&
&&&&&&& mapView.setClickable(true);&
&&&&&&& //获取当前位置层&
&&&&&&& myLocationOverlay = new MyLocationOverlay(this, mapView);&
&&&&&&& //将当前位置的层添加到地图底层中&
&&&&&&& mapView.getOverlays().add(myLocationOverlay);&
&&&&&&& //添加可点选地图获取目的地的层&
&&&&&&& addTapOverLay();&
&&&&&&& //注册定位事件&
&&&&&&& locationListener = new LocationListener(){&
&&&&&&&&&&& @Override&
&&&&&&&&&&& public void onLocationChanged(Location location) {&
&&&&&&&&&&&&&&& if (location != null){&
&&&&&&&&&&&&&&&&&&& //生成GEO类型坐标并在地图上定位到该坐标标示的地点&
&&&&&&&&&&&&&&&&&&&& pt = new GeoPoint((int)(location.getLatitude() * 1e6),&
&&&&&&&&&&&&&&&&&&&&&&&&&&& (int)(location.getLongitude() * 1e6));&
&&&&&&&&&&&&&&&&&&&& mapView.getController().animateTo(pt);&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&& }&
&&&&&&& };&
&&&&&&& //初始化搜索模块&
&&&&&&& searchModel = new MKSearch();&
&&&&&&& //设置路线策略为最短距离&
&&&&&&& searchModel.setDrivingPolicy(MKSearch.ECAR_DIS_FIRST);&
&&&&&&& searchModel.init(mMapManager, new MKSearchListener() {&
&&&&&&&&&&& //获取驾车路线回调方法&
&&&&&&&&&&& @Override&
&&&&&&&&&&& public void onGetDrivingRouteResult(MKDrivingRouteResult res, int error) {&
&&&&&&&&&&&&&&& // 错误号可参考MKEvent中的定义&
&&&&&&&&&&&&&&& if (error != 0 || res == null) {&
&&&&&&&&&&&&&&&&&&& Toast.makeText(NavigationDemoActivity.this, &抱歉,未找到结果&, Toast.LENGTH_SHORT).show();&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&&&&&& RouteOverlay routeOverlay = new RouteOverlay(NavigationDemoActivity.this, mapView);&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& // 此处仅展示一个方案作为示例&
&&&&&&&&&&&&&&& MKRoute route = res.getPlan(0).getRoute(0);&
&&&&&&&&&&&&&&& int distanceM = route.getDistance();&
&&&&&&&&&&&&&&& String distanceKm = String.valueOf(distanceM / 1000) +&.&+String.valueOf(distanceM % 1000);&
&&&&&&&&&&&&&&& System.out.println(&距离:&+distanceKm+&公里---节点数量:&+route.getNumSteps());&
&&&&&&&&&&&&&&& for (int i = 0; i & route.getNumSteps(); i++) {&
&&&&&&&&&&&&&&&&&&& MKStep step = route.getStep(i);&
&&&&&&&&&&&&&&&&&&& System.out.println(&节点信息:&+step.getContent());&
&&&&&&&&&&&&&&&&&&& System.out.println(&经度:&+step.getPoint().getLongitudeE6() / 1E6 +& 纬度:&+step.getPoint().getLatitudeE6() / 1E6);&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&&&&&& routeOverlay.setData(route);&
&&&&&&&&&&&&&&& mapView.getOverlays().clear();&
&&&&&&&&&&&&&&& mapView.getOverlays().add(routeOverlay);&
&&&&&&&&&&&&&&& mapView.invalidate();&
&&&&&&&&&&&&&&& mapView.getController().animateTo(res.getStart().pt);&
&&&&&&&&&&& }&
&&&&&&&&&&&&&
&&&&&&&&&&& //以下两种方式和上面的驾车方案实现方法一样&
&&&&&&&&&&& @Override&
&&&&&&&&&&& public void onGetWalkingRouteResult(MKWalkingRouteResult res, int error) {&
&&&&&&&&&&&&&&& //获取步行路线&
&&&&&&&&&&& }&
&&&&&&&&&&&&&
&&&&&&&&&&& @Override&
&&&&&&&&&&& public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {&
&&&&&&&&&&&&&&& //获取公交线路&
&&&&&&&&&&& }&
&&&&&&&&&&&&&
&&&&&&&&&&& @Override&
&&&&&&&&&&& public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {&
&&&&&&&&&&& }&
&&&&&&&&&&& @Override&
&&&&&&&&&&& public void onGetAddrResult(MKAddrInfo arg0, int arg1) {&
&&&&&&&&&&& }&
&&&&&&&&&&& @Override&
&&&&&&&&&&& public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {&
&&&&&&&&&&& }&
&&&&&&&&&&& @Override&
&&&&&&&&&&& public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {&
&&&&&&&&&&& }&
&&&&&&& });&
&&&&&&& startNaviButton.setOnClickListener(new OnClickListener() {&
&&&&&&&&&&&&&
&&&&&&&&&&& @Override&
&&&&&&&&&&& public void onClick(View v) {&
&&&&&&&&&&&&&&& String destination = destinationEditText.getText().toString();&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& //设置起始地(当前位置)&
&&&&&&&&&&&&&&& MKPlanNode startNode = new MKPlanNode();&
&&&&&&&&&&&&&&& startNode.pt =&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& //设置目的地&
&&&&&&&&&&&&&&& MKPlanNode endNode = new MKPlanNode();&&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& float lat = sharedPreferences.getFloat(&lat&, 0);&
&&&&&&&&&&&&&&& float lon = sharedPreferences.getFloat(&lon&, 0);&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& if (lat != 0 && lon != 0) {&
&&&&&&&&&&&&&&&&&&& endNode.pt = new GeoPoint((int)lat,(int)lon);&
&&&&&&&&&&&&&&& }else if (!destination.equals(&&)) {&
&&&&&&&&&&&&&&&&&&& endNode.name =&
&&&&&&&&&&&&&&& }else {&
&&&&&&&&&&&&&&&&&&& Toast.makeText(NavigationDemoActivity.this, &请输入或点选目的地&,Toast.LENGTH_SHORT).show();&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& //展开搜索的城市&
&&&&&&&&&&&&&&& String city = getResources().getString(R.string.beijing);&
&&&&&&&&&&&&&&& searchModel.drivingSearch(city, startNode, city, endNode);&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& //步行路线&
//&&&&&&&&&&&&& searchModel.walkingSearch(city, startNode, city, endNode);&
&&&&&&&&&&&&&&& //公交路线&
//&&&&&&&&&&&&& searchModel.transitSearch(city, startNode, endNode);&
&&&&&&&&&&& }&
&&&&&&& });&
&&&&&&& //清除路线按钮事件&
&&&&&&& clearButton.setOnClickListener(new OnClickListener() {&
&&&&&&&&&&&&&
&&&&&&&&&&& @Override&
&&&&&&&&&&& public void onClick(View v) {&
&&&&&&&&&&&&&&& List&Overlay& overlays = mapView.getOverlays();&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& if (sharedPreferences.getFloat(&lon&, 0) != 0) {&
&&&&&&&&&&&&&&&&&&& //移除顶层的路线图层&
&&&&&&&&&&&&&&&&&&& overlays.remove(overlays.size() - 1);&
&&&&&&&&&&&&&&&&&&& //添加用户当前位置图层&
&&&&&&&&&&&&&&&&&&& overlays.add(myLocationOverlay);&
&&&&&&&&&&&&&&&&&&& //地图更新定位到当前位置&
&&&&&&&&&&&&&&&&&&& mapView.getController().animateTo(pt);&
&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& //清除存储的经纬度信息&
&&&&&&&&&&&&&&&&&&& Editor editor = sharedPreferences.edit();&
&&&&&&&&&&&&&&&&&&& editor.clear();&
&&&&&&&&&&&&&&&&&&& mit();&
&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& //添加可点选图层&
&&&&&&&&&&&&&&&&&&& addTapOverLay();&
&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& }else if (!destinationEditText.getText().toString().equals(&&)) {&
&&&&&&&&&&&&&&&&&&& overlays.remove(overlays.size() - 1);&
&&&&&&&&&&&&&&&&&&& overlays.add(myLocationOverlay);&
&&&&&&&&&&&&&&&&&&& mapView.getController().animateTo(pt);&
&&&&&&&&&&&&&&&&&&& addTapOverLay();&
&&&&&&&&&&&&&&& }else {&
&&&&&&&&&&&&&&&&&&& Toast.makeText(NavigationDemoActivity.this, &没有设置路线&, Toast.LENGTH_SHORT).show();&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&& }&
&&&&&&& });&
&&& public void showIntroduceDialog(){&
&&&&&&& AlertDialog.Builder builder = new AlertDialog.Builder(this);&
&&&&&&& builder.setTitle(&使用说明&);&
&&&&&&& StringBuilder sb = new StringBuilder();&
&&&&&&& sb.append(&1.地图中蓝色点为当前位置;\n\n&);&
&&&&&&& sb.append(&2.双指捏合或点击缩放按钮可以缩放地图;\n\n&);&
&&&&&&& sb.append(&3.在输入框中输入目的地或在地图上点选目的地;\n\n&);&
&&&&&&& sb.append(&4.选取目的地后点击按钮开始导航;\n\n&);&
&&&&&&& sb.append(&5.点击清除按钮取消本次导航路线;&);&
&&&&&&& builder.setMessage(sb.toString());&
&&&&&&& builder.setNegativeButton(&确定&, null);&
&&&&&&& builder.create().show();&
&&& public void addTapOverLay(){&
&&&&&&& //以一副透明图片标示可点选图层,这里在地图上不显示出来,只提供可点选目的地功能&
&&&&&&& GeoPoint gpoint = new GeoPoint((int) (39.914714 * 1E6), (int) (116.404269 * 1E6));&
&&&&&&& OverlayItem overlayitem = new OverlayItem(gpoint, &title&, &content&);&
&&&&&&& Drawable drawale = getResources().getDrawable(R.drawable.current);&
&&&&&&& MyItemizedOverlay iconOverlay = new MyItemizedOverlay(NavigationDemoActivity.this,drawale);&
&&&&&&& // 添加图层&
&&&&&&& iconOverlay.addOverlay(overlayitem);&
&&&&&&& mapView.getOverlays().add(iconOverlay);&
&&& @Override&
&&& protected void onResume() {&
&&&&&&& mMapManager.getLocationManager().requestLocationUpdates(locationListener);&
&&&&&&& myLocationOverlay.enableMyLocation();&
&&&&&&& myLocationOverlay.enableCompass(); // 打开指南针&
&&&&&&& mMapManager.start();&
&&&&&&& super.onResume();&
&&& @Override&
&&& protected void onPause() {&
&&&&&&& mMapManager.getLocationManager().removeUpdates(locationListener);&
&&&&&&& myLocationOverlay.disableMyLocation();//显示当前位置&
&&&&&&& myLocationOverlay.disableCompass(); // 关闭指南针&
&&&&&&& mMapManager.stop();&
&&&&&&& super.onPause();&
&&& @Override&
&&& protected boolean isRouteDisplayed() {&
&&&&&&& // TODO Auto-generated method stub&
&&& //按物理返回键退出应用时清空存储的经纬度信息&
&&& @Override&
&&& public boolean dispatchKeyEvent(KeyEvent event) {&
&&&&&&& if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_BACK) {&
&&&&&&&&&&& Editor editor = sharedPreferences.edit();&
&&&&&&&&&&& editor.clear();&
&&&&&&&&&&& mit();&
&&&&&&& }&
&&&&&&& return super.dispatchKeyEvent(event);&
&&& // 常用事件监听,用来处理通常的网络错误,授权验证错误等&
&&& class MyGeneralListener implements MKGeneralListener {&
&&&&&&&&&&& @Override&
&&&&&&&&&&& public void onGetNetworkState(int iError) {&
&&&&&&&&&&&&&&& Log.d(&MyGeneralListener&, &onGetNetworkState error is &+ iError);&
&&&&&&&&&&&&&&& Toast.makeText(NavigationDemoActivity.this, &您的网络出错啦!&,&
&&&&&&&&&&&&&&&&&&&&&&& Toast.LENGTH_LONG).show();&
&&&&&&&&&&& }&
&&&&&&&&&&& @Override&
&&&&&&&&&&& public void onGetPermissionState(int iError) {&
&&&&&&&&&&&&&&& Log.d(&MyGeneralListener&, &onGetPermissionState error is &+ iError);&
&&&&&&&&&&&&&&& if (iError ==& MKEvent.ERROR_PERMISSION_DENIED) {&
&&&&&&&&&&&&&&&&&&& // 授权Key错误:&
&&&&&&&&&&&&&&&&&&& Toast.makeText(NavigationDemoActivity.this,&&
&&&&&&&&&&&&&&&&&&&&&&&&&&& &请在BMapApiDemoApp.java文件输入正确的授权Key!&,&
&&&&&&&&&&&&&&&&&&&&&&&&&&& Toast.LENGTH_LONG).show();&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&& }&
&&&&&&& }&
最后是配置文件:
&?xml version=&1.0& encoding=&utf-8&?&&
&manifest xmlns:android=&&&
&&& package=&com.ericssonlabs&&
&&& android:versionCode=&1&&
&&& android:versionName=&1.0& &&
&&& &uses-sdk android:minSdkVersion=&8& /&&
&&& &uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE&&&/uses-permission&&
&&& &uses-permission android:name=&android.permission.ACCESS_FINE_LOCATION&&&/uses-permission&&
&&& &uses-permission android:name=&android.permission.INTERNET&&&/uses-permission&&
&&& &uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE&&&/uses-permission&&
&&& &uses-permission android:name=&android.permission.ACCESS_WIFI_STATE&&&/uses-permission&&&&
&&& &uses-permission android:name=&android.permission.CHANGE_WIFI_STATE&&&/uses-permission&&&
&&& &uses-permission android:name=&android.permission.READ_PHONE_STATE&&&/uses-permission&&
&&& &supports-screens android:largeScreens=&true&&
&&&&&&& android:normalScreens=&true& android:smallScreens=&true&&
&&&&&&& android:resizeable=&true& android:anyDensity=&true&/&&
&&& &uses-sdk android:minSdkVersion=&3&&&/uses-sdk&&
&&& &application&
&&&&&&& android:icon=&@drawable/ic_launcher&&
&&&&&&& android:label=&@string/app_name& &&
&&&&&&& &activity&
&&&&&&&&&&& android:name=&.NavigationDemoActivity&&
&&&&&&&&&&& android:label=&@string/app_name& &&
&&&&&&&&&&& &intent-filter&&
&&&&&&&&&&&&&&& &action android:name=&android.intent.action.MAIN& /&&
&&&&&&&&&&&&&&& &category android:name=&android.intent.category.LAUNCHER& /&&
&&&&&&&&&&& &/intent-filter&&
&&&&&&& &/activity&&
&&& &/application&&
&/manifest&&
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

我要回帖

更多关于 用手机导航费流量吗 的文章

 

随机推荐