《iPad开发从入门到精通》——6.5节地图信息

6.5 地图信息
iPad开发从入门到精通
通过此功能,可以在地图中查看某条公交线路的信息,这样更具有直观性,大大地方便了用户的浏览。本系统可以分为如下3种显示地图的样式。
Standard。
Statellite。
Hybird。
除此之外,还提供了网页地图功能。

6.5.1 地图主视图
地图主视图CBus_MapView.xib的UI界面效果如图6-11所示。在上方显示3个选项卡,在下方显示了地图信息。

实现文件 CBus_MapViewController.m的主要代码如下所示。

#import "CBus_MapViewController.h"
#import "CBus_WebMapViewController.h"
#import "CDataContainer.h"
@implementation CBus_MapViewController
@synthesize cityMapView,mapStyleSegCtr,mapNavigationBar;
@synthesize webMapViewController;
- (void)dealloc{
  [super dealloc];
  [cityMapView release];
  [mapStyleSegCtr release];
  [mapNavigationBar release];
  [webMapViewController release];
}
- (void)didReceiveMemoryWarning{
  // 释放视图
  [super didReceiveMemoryWarning];
}
#pragma mark - View lifecycle
- (void)viewDidLoad{
  [super viewDidLoad];
  UIBarButtonItem *webMapButton = [[UIBarButtonItem alloc]
                  initWithTitle:@"WebMap"
                  style:UIBarButtonItemStyleBordered
                  target:self
                  action:@selector(goToWebMap:)];

  self.navigationItem.rightBarButtonItem = webMapButton;
  [webMapButton release];
  CLLocationManager *locationMananger = [[CLLocationManager alloc] init];
  locationMananger.delegate = self;
  locationMananger.desiredAccuracy = kCLLocationAccuracyBest;
  locationMananger.distanceFilter = 1000.0;
  [locationMananger startUpdatingHeading];
  MKCoordinateSpan theSpan;
  theSpan.latitudeDelta = 0.05;
  theSpan.longitudeDelta = 0.05;
  MKCoordinateRegion theRegion;
  theRegion.center = [[locationMananger location]coordinate];
  theRegion.span = theSpan;
  [cityMapView setRegion:theRegion];
  [locationMananger release];
}
- (IBAction) OnSegmentIndexChanged:(id)sender{
  if ([sender selectedSegmentIndex] == 0){
    NSLog(@"--------------OnSegmentIndexChanged1-------");
    cityMapView.mapType = MKMapTypeStandard;
  }
  else if([sender selectedSegmentIndex] == 1){
    NSLog(@"--------------OnSegmentIndexChanged2-------");
    cityMapView.mapType = MKMapTypeSatellite;
  }
  else if([sender selectedSegmentIndex] == 2){
    NSLog(@"--------------OnSegmentIndexChanged3-------");

    cityMapView.mapType = MKMapTypeHybrid;
  }
}
- (void)viewWillAppear:(BOOL)animated{
  [super viewWillAppear:animated];
  NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
  NSInteger styleNum = [userDefault integerForKey:@"styleType"];
  switch (styleNum) {
    case 0:{
      [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
      self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
      self.mapStyleSegCtr.tintColor = [UIColor colorWithRed:0.48  green: 0.56 blue:0.66 alpha:1.0];
      self.mapNavigationBar.barStyle = UIBarStyleDefault;
      break;
    }
    case 1:{
      [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyle BlackOpaque;
      self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;
      self.mapStyleSegCtr.tintColor = [UIColor darkGrayColor];
      self.mapNavigationBar.barStyle = UIBarStyleBlackOpaque;
      break;
    }
  }
}
- (IBAction)goToWebMap:(id)sender
{
  CBus_WebMapViewController *theController = [[CBus_WebMapViewController alloc] initWithNibName:@"CBus_WebMapView" bundle:nil];
  self.webMapViewController = theController;

  [UIView beginAnimations:@"View Flip" context:nil];
  [UIView setAnimationDuration:1.0];
  [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
  [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView: self.navigationController.view cache:NO];
  [self.navigationController pushViewController:webMapViewController animated:YES];
  [UIView commitAnimations];

  [theController release];
}
- (void)viewDidUnload{
  [super viewDidUnload];
  }
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)
interfaceOrientation{
  // Return YES for supported orientations
  return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end

执行效果如图6-12所示。

6.5.2 Web地图视图
为了便于用户详细浏览公交路线,本项目还提供了Web地图功能,CBus_WebMapView.xibUI界面效果如图6-13所示。

实现文件CBus_WebMapViewController.m的主要代码如下所示。

#import "CBus_WebMapViewController.h"
@implementation CBus_WebMapViewController
@synthesize myWenView;
// 视图初始化
- (void)viewDidLoad {
  [super viewDidLoad];  
  self.navigationItem.hidesBackButton = YES;
  UIBarButtonItem *mapButton = [[UIBarButtonItem alloc]
       initWithTitle:@"Map"
         style:UIBarButtonItemStyleBordered
     target:self
action:@selector(goToMap:)];  
  self.navigationItem.rightBarButtonItem = mapButton;  
  NSMutableString *googleSearch = [NSMutableString stringWithFormat:@"http://ditu. google.cn/maps?f=d&source=s_d&saddr='西安市火车站'&daddr='西安市钟楼'&hl=zh&t=m&dirflg=h"];
  [myWenView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[google Search stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]]];

  [mapButton release];
}
- (IBAction) goToMap:(id)sender
{
  [UIView beginAnimations:@"View Flip" context:nil];
  [UIView setAnimationDuration:1.0];
  [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
  [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.
navigationController.view cache:NO];
  [self.navigationController popViewControllerAnimated:NO];
  [UIView commitAnimations];
}
- (void)viewWillAppear:(BOOL)animated{
  [super viewWillAppear:animated];
  NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
  NSInteger styleNum = [userDefault integerForKey:@"styleType"];
  switch (styleNum) {
    case 0:{
      [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
      self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
      break;
    }
    case 1:{
      [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyle BlackOpaque;
      self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;
      break;
    }
  }
}
- (void)didReceiveMemoryWarning {
  // 释放视图
  [super didReceiveMemoryWarning];
}
- (void)viewDidUnload {

  [super viewDidUnload];
  self.myWenView=nil;
}
- (void)dealloc {
  [super dealloc];
  [self.myWenView release];
}
@end

执行效果如图6-14所示。

时间: 2024-09-20 05:50:15

《iPad开发从入门到精通》——6.5节地图信息的相关文章

《iPad开发从入门到精通》——6.2节系统主界面

6.2 系统主界面 iPad开发从入门到精通 本章实例的的源码保存在":\daima\6\Bus",默认的系统主界面是线路查询视图,在线路查询视图CBus_LineView.xib顶部设置了一个查询表单,在下方列表显示系统内的公交线路.线路查询视图的UI界面如图6-1所示. 6.2.1 线路查询视图 实现文件CBus_LineViewController.h的代码如下所示. #import <UIKit/UIKit.h> @interface CBus_LineViewCo

《iPad开发从入门到精通》——6.3节站站查询

6.3 站站查询 iPad开发从入门到精通 本模块的功能是提供站站查询功能,只需输入起始站和目的站的名称,就可以快速查询到符合要求的公交线路了.在本节的内容中,将详细讲解站站查询模块的具体实现流程. 6.3.1 站站查询主视图 站站查询主视图CBus_StatToStatView.xib的UI界面如图6-6所示,在上方显示搜索表单,下方列表显示了30条线路. 实现文件CBus_StatToStatViewController.h的代码如下所示. #import <UIKit/UIKit.h>

《iPad开发从入门到精通》——6.1节系统介绍

6.1 系统介绍iPad开发从入门到精通在具体编码之前,大家需要先了解本实例项目的基本功能,了解各个模块的具体结构,为后期的编码工作打好基础.本章的音乐盒项目功能强大,具备如下所示的功能. (1)线路查询.为了方便用户迅速找到自己需要的线路,提供了线路查询功能.只需输入某路公交的线路名,就可以快速查询到这条线路. (2)站站查询.为了满足系统的完整性要求,特意提供了站站查询功能.只需输入自己的起始站和目的站的名称,就可以快速查询到符合要求的公交线路. (3)收藏历史.为了方便用户,特意提供了收藏

《iPad开发从入门到精通》——6.6节系统设置

6.6 系统设置iPad开发从入门到精通为了方便用户对本系统的管理,特意提供了本模块供用户对系统进行管理.主要包括如下所示的功能. 主题设置.当前城市.数据下载.软件信息.在本节的内容中,将详细讲解本项目系统设置模块的实现过程. 6.6.1 主视图系统设置主视图CSettingView.xib的UI界面效果如图6-15所示,分别列出了主题设置.当前城市.数据下载和软件信息共4个选项. 实现文件CSettingViewController.m的主要代码如下所示. @implementation C

《iPad开发从入门到精通》——6.4节收藏历史

6.4 收藏历史iPad开发从入门到精通为了方便用户,特意提供了收藏历史功能,用户可以将经常用到的信息收藏起来,便于以后查询.主要包括如下3类收藏信息.收藏线路.收藏站点.收藏站站.CFavoriteView.xib的UI界面如图6-9所示,在上方显示了3个选项卡,在下方列表中显示了具体的收藏信息. 文件CFavoriteViewController.h的实现代码如下所示. #import <UIKit/UIKit.h> enum ESegCtrlIndex { EFavorite_Line,

《iPad开发从入门到精通》——导读

目 录 第1章 iOS开发入门第2章 Objective-C语言基础第3章 开发一个浏览器程序第4章 开发一个视频播放器第5章 开发一个翻书特效系统第6章 开发一个公交路线查询系统 6.1 系统介绍 6.2 系统主界面 6.3 站站查询 6.4 收藏历史 6.5 地图信息 6.6 系统设置 第7章 开发一个记事本程序第8章 开发一个地图系统第9章 开发一个拼图游戏第10章 开发一个密码系统第11章 开发一个绘图程序

《51单片机应用开发从入门到精通》——2.4 延时时间计算实例

2.4 延时时间计算实例 51单片机应用开发从入门到精通 在单片机的实时控制系统中,常常需要用到延时操作,所以,延时子程序往往是编写单片机程序中不可缺少的一部分.延时方法有硬件延时和软件延时,硬件延时将在后面有关章节中介绍,本节将介绍软件延时方法. 所谓软件延时,就是让计算机重复执行一些无具体任务的程序,利用执行程序的时间来达到延时的目的. 2.4.1 机器周期和指令周期 单片机读.写操作都需要消耗一定的时间,机器周期是指单片机完成一个基本操作所用的时间,如读操作.写操作等.当石英晶体为12MH

《C++ 开发从入门到精通》导读

前言 C++ 开发从入门到精通 从你开始学习编程的那一刻起,就注定了以后所要走的路:从编程学习者开始,依次经历实习生.程序员.软件工程师.架构师.CTO等职位的磨砺:当你站在职位顶峰的位置蓦然回首,会发现自己的成功并不是偶然,在程序员的成长之路上会有不断修改代码.寻找并解决Bug.不停测试程序和修改项目的经历:不可否认的是,只要你在自己的开发生涯中稳扎稳打,并且善于总结和学习,最终将会得到可喜的收获. 选择一本合适的书 对于一名想从事程序开发的初学者来说,究竟如何学习才能提高自己的开发技术呢?其

《C语言开发从入门到精通》一导读

前言 C语言开发从入门到精通 从你开始学习编程的那一刻起,就注定了以后所要走的路:从编程学习者开始,依次经历实习生.程序员.软件工程师.架构师.CTO等职位的磨砺:当你站在职位顶峰的位置蓦然回首,会发现自己的成功并不是偶然,在程序员的成长之路上会有不断修改代码.寻找并解决Bug.不停测试程序和修改项目的经历:不可否认的是,只要你在自己的开发生涯中稳扎稳打,并且善于总结和学习,最终将会得到可喜的收获. 目 录 第1章 C语言之定位1.1 C语言的诞生1.2 第一印象的建立1.3 理解编译系统--学