- 浏览: 663323 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lizaochengwen:
网络请求碰到的中文乱码使用encodeURL吧- (NSStr ...
iPhone开发/iPad开发 中文乱码问题 -
hhb19900618:
还是没弄懂怎么解决了中文乱码? 正确代码能重写贴出吗
iPhone开发/iPad开发 中文乱码问题 -
zhengjj_2009:
我的理解是讲ipa文件解压缩之后再重新打包,已经破坏了签名,所 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
zhengjj_2009:
我参考你的“ 从ipa格式的母包生成其它渠道包的shell脚本 ...
xcodebuild和xcrun实现自动打包iOS应用程序 -
同一片天空:
问题果然解决了
iOS 搭建 XMPP实现环境
之前写了一篇关于获取当前位置的文章。现在这篇文章将探讨一下,如何用地图显示地理信息,以及我们怎么自定义地图的Annotation,也就是地图图钉。
接下来的叙述都是为了实现下面的效果:
上图显示的内容包括:
1. 在界面显示一副地图;
2. 在地图上显示一个“笑脸”图标,笑脸所在的位置就是你的当前位置,或者你自己任意设定的地理位置;
3. 点击“笑脸”图标之后,会弹出一个类似标签(Annotation)的东西,标签上有三种内容:左边一副蝙蝠侠的图片,中间文字内容,以及最右边的按钮。
其中2和3都是属于自定义地图Annotation。
下面我们就一步步来实现上图的效果吧。
===显示地图===
第一步:
首先在你的工程的frameworks下面加入Mapkit.framework。至于如何加入一个framework,请参考之前的一篇文章。
加入Mapkit.framework之后,在需要用到地图的类的头文件中加入“#import <MapKit/MapKit.h>”。这时候便可以使用所有关于地图的功能了。
显示地图十分简单,只要在xib文件里面,将一个MKMapView拖进容纳这幅地图的View当中即可。这时候进行调试,将出现一个全球的地图。原因是因为你没有给地图一个显示的地理信息,所以初始化的地图只能显示一个全球的范围。
那么下一步便是将地图跳转到你需要显示的地理位置。加入你通过之前文章的阅读,已经获取到了当前位置,保存到checkinLocation(一个CLLocation的指针)当中了。
第二步:
在需要显示地图的View类中定义一个mapView:IBOutlet MKMapView *mapView。并且在xib中将之前拖进来的MKMapView和这个mapView成员变量建立outlets的关系(什么?不懂?那就从头学一下xcode吧)。
在类的实现文件(.m)中加入以下代码(方法名自己起吧,我这里起的是initMapView):
view plain
- (void) initMapView {
MKCoordinateSpan theSpan;
//设置地图的范围,越小越精确
theSpan.latitudeDelta = 0.02;
theSpan.longitudeDelta = 0.02;
MKCoordinateRegion theRegion;
theRegion.center = [checkinLocation coordinate]; //让地图跳到之前获取到的当前位置checkinLocation
theRegion.span = theSpan;
[mapView setRegion:theRegion];
}
然后,你在显示这个View的时候(比如在viewDidLoad函数中)调用initMapView,地图便可以跳到你要显示的位置了。这里关键的函数是setRegion,已经被MKMapView类封装好了。
至此,你的应用就可以显示地图,并且跳到你设定的任何位置了。是不是特简单?简直简单到我在怀疑我是否有写这篇文章的需要了。不过,废话少说。下面还是来看看如何自定义Annotation吧。
===自定义Annotation===
如果不采取自定义的Annotation,ios默认的是一个图钉的形状,如下图(一个紫色的图钉):
当然,千里执行始于足下,我们还是首先来看看如何在特定的位置显示以上的默认的小图钉吧。
第一步:
先定义一个自己的Annotation的类:
view plain
@interface MyMapAnnotation : NSObject<MKAnnotation> {
CLLocationCoordinate2D location;
NSString *title;
NSString *subtitle;
NSString *headImage;
}
@property CLLocationCoordinate2D location;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
@property (nonatomic, copy) NSString *headImage;
@end
从上面代码可以看到,MyMapAnnotation类继承于MKAnnotation。里面包含四个成员变量。其中location保存要显示这个Annotation的位置。其他三个变量对应我们之前那个效果图的几点内容:头像、文字内容。
这个类的实现文件(.m)文件很简单,就定义好dealloc和init方法就好,这里不再赘述。
第二步:
在要显示地图的View类中实现MKMapViewDelegate,并实现viewForAnnotation函数,代码如下:
view plain
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation {
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
// 处理我们自定义的Annotation
if ([annotation isKindOfClass:[MyMapAnnotation class]]) {
static NSString* travellerAnnotationIdentifier = @"TravellerAnnotationIdentifier";
MKPinAnnotationView* pinView = (MKPinAnnotationView *)
[mapView dequeueReusableAnnotationViewWithIdentifier:travellerAnnotationIdentifier];
if (!pinView)
{
// if an existing pin view was not available, create one
MKAnnotationView* customPinView = [[[MKAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:travellerAnnotationIdentifier] autorelease];
customPinView.pinColor = MKPinAnnotationColorPurple;
customPinView.animatesDrop = YES; //如果不需要这个从天而降的效果,设置为NO即可。
customPinView.canShowCallout = NO;
return customPinView;
}
else
{
pinView.annotation = annotation;
}
return pinView;
}
return nil;
}
这段代码将实现默认的一个图钉的效果。
细心地你会发现,上面的代码似乎没有涉及到地理位置,那么地图将怎么知道将这个Annotation放到合适的位置呢?稍安勿躁,稍候将会介绍如何设置Annotation的位置,同时设置Annotation的其他内容(还记得Annotation的定义里面有位置信息,还有几项内容信息吧)。
如果我不喜欢图钉,我想把它换成之前效果图中的笑脸呢?那就把上述代码改成如下:
view plain
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation {
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
if ([annotation isKindOfClass:[TravellerMapAnnotation class]]) {
static NSString* travellerAnnotationIdentifier = @"TravellerAnnotationIdentifier";
MKPinAnnotationView* pinView = (MKPinAnnotationView *)
[mapView dequeueReusableAnnotationViewWithIdentifier:travellerAnnotationIdentifier];
if (!pinView)
{
// if an existing pin view was not available, create one
MKAnnotationView* customPinView = [[[MKAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:travellerAnnotationIdentifier] autorelease];
UIImage *image = [UIImage imageNamed:@"smileFace.png"];
customPinView.image = image; //将图钉变成笑脸。
[image release];
return customPinView;
}
else
{
pinView.annotation = annotation;
}
return pinView;
}
return nil;
}
从上述代码看出,也就是将定义pinColor的代码段去掉,换成设置image的代码:customPinView.image = image.
同样很简单吧。哎,我还有没有写下去的必要呢。(画外音:废话少说!!!)
第三步:
正如之前的疑问,哪里定义Annotation的地理位置以及其他内容呢?不仅仅如此,还有,怎么让用户点击笑脸(或者图钉)之后,弹出一个标签,显示定义好的内容呢。下面我们先看看最后一个问题,怎么让用户点击笑脸(或者图钉)之后,弹出一个标签,显示定义好的内容呢?
还是上面那段代,将它进一步改成:
view plain
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation {
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
if ([annotation isKindOfClass:[TravellerMapAnnotation class]]) {
// try to dequeue an existing pin view first
static NSString* travellerAnnotationIdentifier = @"TravellerAnnotationIdentifier";
MKPinAnnotationView* pinView = (MKPinAnnotationView *)
[mapView dequeueReusableAnnotationViewWithIdentifier:travellerAnnotationIdentifier];
if (!pinView)
{
// if an existing pin view was not available, create one
MKAnnotationView* customPinView = [[[MKAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:travellerAnnotationIdentifier] autorelease];
customPinView.canShowCallout = YES; //很重要,运行点击弹出标签
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self
action:@selector(showDetails:) //点击右边的按钮之后,显示另外一个页面
forControlEvents:UIControlEventTouchUpInside];
customPinView.rightCalloutAccessoryView = rightButton;
MyMapAnnotation *travellerAnnotation = (TravellerMapAnnotation *)annotation;
UIImageView *headImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:travellerAnnotation.headImage]];
customPinView.leftCalloutAccessoryView = headImage; //设置最左边的头像
[headImage release];
UIImage *image = [UIImage imageNamed:@"smileFace.png"];
customPinView.image = image;
customPinView.opaque = YES;
[travellerImage release];
return customPinView;
}
else
{
pinView.annotation = annotation;
}
return pinView;
}
return nil;
}
上面的代码很容易理解(加上我的注释之后),有点objective-C以及cocoa基础的朋友都会看懂。如果你看不懂,拜托,我这里不负责扫盲啊。
也许你有个疑问,似乎没见到设置文字信息呀。其实,之前自定义的MyMapAnnotation继承自MKAnnotation,所以只要你给一个MyMapAnnotation对象的title和subtitle填上内容之后,它会自动显示,不需要你手动让它显示。
下面我们就来看看如何添加MyMapAnnotation的内容吧。
其实这也十分简单,就是创建一个新的MyMapAnnotation,然后往里面添加内容即可。比如:
view plain
TravellerMapAnnotation *travellerAnnotation = [[TravellerMapAnnotation alloc] init];
travellerAnnotation.location = checkinlocation.coordinate;
travellerAnnotation.title = [travellerNames objectAtIndex:i];
travellerAnnotation.subtitle = [scores objectAtIndex:i];
travellerAnnotation.headImage = [headImages objectAtIndex:i];
现在还残留的一个问题是(这是历史遗留的问题,由于某种原因,我们暂时忽略了它。。。!跑题了吧,大叔。。。):
如何将创建好的一个或者多个甚至成千上万个MyMapAnnotation加入地图并显示它呢。
这个问题更加简单。加入建立了100个MyMapAnnotations,并且全部存进了一个NSArray中,MyMapAnnotationsArray,那么我们需要做的就十分简单了:
mapView addAnnotations:MyMapAnnotationsArray
也就是调用MKMapView的addAnnotations方法将所有创建好的Annotations加进来即可。
至此(真的是至此了),所有的工作都完成了。调试,便可看到一开头展示的那个效果了。(呼,好累)。
基础性的技术文章不好写,写得详细太累人,写得简单怕误导别人,sigh。
原文地址:http://blog.csdn.net/whaomian/article/details/6820099
接下来的叙述都是为了实现下面的效果:
上图显示的内容包括:
1. 在界面显示一副地图;
2. 在地图上显示一个“笑脸”图标,笑脸所在的位置就是你的当前位置,或者你自己任意设定的地理位置;
3. 点击“笑脸”图标之后,会弹出一个类似标签(Annotation)的东西,标签上有三种内容:左边一副蝙蝠侠的图片,中间文字内容,以及最右边的按钮。
其中2和3都是属于自定义地图Annotation。
下面我们就一步步来实现上图的效果吧。
===显示地图===
第一步:
首先在你的工程的frameworks下面加入Mapkit.framework。至于如何加入一个framework,请参考之前的一篇文章。
加入Mapkit.framework之后,在需要用到地图的类的头文件中加入“#import <MapKit/MapKit.h>”。这时候便可以使用所有关于地图的功能了。
显示地图十分简单,只要在xib文件里面,将一个MKMapView拖进容纳这幅地图的View当中即可。这时候进行调试,将出现一个全球的地图。原因是因为你没有给地图一个显示的地理信息,所以初始化的地图只能显示一个全球的范围。
那么下一步便是将地图跳转到你需要显示的地理位置。加入你通过之前文章的阅读,已经获取到了当前位置,保存到checkinLocation(一个CLLocation的指针)当中了。
第二步:
在需要显示地图的View类中定义一个mapView:IBOutlet MKMapView *mapView。并且在xib中将之前拖进来的MKMapView和这个mapView成员变量建立outlets的关系(什么?不懂?那就从头学一下xcode吧)。
在类的实现文件(.m)中加入以下代码(方法名自己起吧,我这里起的是initMapView):
view plain
- (void) initMapView {
MKCoordinateSpan theSpan;
//设置地图的范围,越小越精确
theSpan.latitudeDelta = 0.02;
theSpan.longitudeDelta = 0.02;
MKCoordinateRegion theRegion;
theRegion.center = [checkinLocation coordinate]; //让地图跳到之前获取到的当前位置checkinLocation
theRegion.span = theSpan;
[mapView setRegion:theRegion];
}
然后,你在显示这个View的时候(比如在viewDidLoad函数中)调用initMapView,地图便可以跳到你要显示的位置了。这里关键的函数是setRegion,已经被MKMapView类封装好了。
至此,你的应用就可以显示地图,并且跳到你设定的任何位置了。是不是特简单?简直简单到我在怀疑我是否有写这篇文章的需要了。不过,废话少说。下面还是来看看如何自定义Annotation吧。
===自定义Annotation===
如果不采取自定义的Annotation,ios默认的是一个图钉的形状,如下图(一个紫色的图钉):
当然,千里执行始于足下,我们还是首先来看看如何在特定的位置显示以上的默认的小图钉吧。
第一步:
先定义一个自己的Annotation的类:
view plain
@interface MyMapAnnotation : NSObject<MKAnnotation> {
CLLocationCoordinate2D location;
NSString *title;
NSString *subtitle;
NSString *headImage;
}
@property CLLocationCoordinate2D location;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
@property (nonatomic, copy) NSString *headImage;
@end
从上面代码可以看到,MyMapAnnotation类继承于MKAnnotation。里面包含四个成员变量。其中location保存要显示这个Annotation的位置。其他三个变量对应我们之前那个效果图的几点内容:头像、文字内容。
这个类的实现文件(.m)文件很简单,就定义好dealloc和init方法就好,这里不再赘述。
第二步:
在要显示地图的View类中实现MKMapViewDelegate,并实现viewForAnnotation函数,代码如下:
view plain
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation {
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
// 处理我们自定义的Annotation
if ([annotation isKindOfClass:[MyMapAnnotation class]]) {
static NSString* travellerAnnotationIdentifier = @"TravellerAnnotationIdentifier";
MKPinAnnotationView* pinView = (MKPinAnnotationView *)
[mapView dequeueReusableAnnotationViewWithIdentifier:travellerAnnotationIdentifier];
if (!pinView)
{
// if an existing pin view was not available, create one
MKAnnotationView* customPinView = [[[MKAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:travellerAnnotationIdentifier] autorelease];
customPinView.pinColor = MKPinAnnotationColorPurple;
customPinView.animatesDrop = YES; //如果不需要这个从天而降的效果,设置为NO即可。
customPinView.canShowCallout = NO;
return customPinView;
}
else
{
pinView.annotation = annotation;
}
return pinView;
}
return nil;
}
这段代码将实现默认的一个图钉的效果。
细心地你会发现,上面的代码似乎没有涉及到地理位置,那么地图将怎么知道将这个Annotation放到合适的位置呢?稍安勿躁,稍候将会介绍如何设置Annotation的位置,同时设置Annotation的其他内容(还记得Annotation的定义里面有位置信息,还有几项内容信息吧)。
如果我不喜欢图钉,我想把它换成之前效果图中的笑脸呢?那就把上述代码改成如下:
view plain
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation {
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
if ([annotation isKindOfClass:[TravellerMapAnnotation class]]) {
static NSString* travellerAnnotationIdentifier = @"TravellerAnnotationIdentifier";
MKPinAnnotationView* pinView = (MKPinAnnotationView *)
[mapView dequeueReusableAnnotationViewWithIdentifier:travellerAnnotationIdentifier];
if (!pinView)
{
// if an existing pin view was not available, create one
MKAnnotationView* customPinView = [[[MKAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:travellerAnnotationIdentifier] autorelease];
UIImage *image = [UIImage imageNamed:@"smileFace.png"];
customPinView.image = image; //将图钉变成笑脸。
[image release];
return customPinView;
}
else
{
pinView.annotation = annotation;
}
return pinView;
}
return nil;
}
从上述代码看出,也就是将定义pinColor的代码段去掉,换成设置image的代码:customPinView.image = image.
同样很简单吧。哎,我还有没有写下去的必要呢。(画外音:废话少说!!!)
第三步:
正如之前的疑问,哪里定义Annotation的地理位置以及其他内容呢?不仅仅如此,还有,怎么让用户点击笑脸(或者图钉)之后,弹出一个标签,显示定义好的内容呢。下面我们先看看最后一个问题,怎么让用户点击笑脸(或者图钉)之后,弹出一个标签,显示定义好的内容呢?
还是上面那段代,将它进一步改成:
view plain
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation {
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
if ([annotation isKindOfClass:[TravellerMapAnnotation class]]) {
// try to dequeue an existing pin view first
static NSString* travellerAnnotationIdentifier = @"TravellerAnnotationIdentifier";
MKPinAnnotationView* pinView = (MKPinAnnotationView *)
[mapView dequeueReusableAnnotationViewWithIdentifier:travellerAnnotationIdentifier];
if (!pinView)
{
// if an existing pin view was not available, create one
MKAnnotationView* customPinView = [[[MKAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:travellerAnnotationIdentifier] autorelease];
customPinView.canShowCallout = YES; //很重要,运行点击弹出标签
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self
action:@selector(showDetails:) //点击右边的按钮之后,显示另外一个页面
forControlEvents:UIControlEventTouchUpInside];
customPinView.rightCalloutAccessoryView = rightButton;
MyMapAnnotation *travellerAnnotation = (TravellerMapAnnotation *)annotation;
UIImageView *headImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:travellerAnnotation.headImage]];
customPinView.leftCalloutAccessoryView = headImage; //设置最左边的头像
[headImage release];
UIImage *image = [UIImage imageNamed:@"smileFace.png"];
customPinView.image = image;
customPinView.opaque = YES;
[travellerImage release];
return customPinView;
}
else
{
pinView.annotation = annotation;
}
return pinView;
}
return nil;
}
上面的代码很容易理解(加上我的注释之后),有点objective-C以及cocoa基础的朋友都会看懂。如果你看不懂,拜托,我这里不负责扫盲啊。
也许你有个疑问,似乎没见到设置文字信息呀。其实,之前自定义的MyMapAnnotation继承自MKAnnotation,所以只要你给一个MyMapAnnotation对象的title和subtitle填上内容之后,它会自动显示,不需要你手动让它显示。
下面我们就来看看如何添加MyMapAnnotation的内容吧。
其实这也十分简单,就是创建一个新的MyMapAnnotation,然后往里面添加内容即可。比如:
view plain
TravellerMapAnnotation *travellerAnnotation = [[TravellerMapAnnotation alloc] init];
travellerAnnotation.location = checkinlocation.coordinate;
travellerAnnotation.title = [travellerNames objectAtIndex:i];
travellerAnnotation.subtitle = [scores objectAtIndex:i];
travellerAnnotation.headImage = [headImages objectAtIndex:i];
现在还残留的一个问题是(这是历史遗留的问题,由于某种原因,我们暂时忽略了它。。。!跑题了吧,大叔。。。):
如何将创建好的一个或者多个甚至成千上万个MyMapAnnotation加入地图并显示它呢。
这个问题更加简单。加入建立了100个MyMapAnnotations,并且全部存进了一个NSArray中,MyMapAnnotationsArray,那么我们需要做的就十分简单了:
mapView addAnnotations:MyMapAnnotationsArray
也就是调用MKMapView的addAnnotations方法将所有创建好的Annotations加进来即可。
至此(真的是至此了),所有的工作都完成了。调试,便可看到一开头展示的那个效果了。(呼,好累)。
基础性的技术文章不好写,写得详细太累人,写得简单怕误导别人,sigh。
原文地址:http://blog.csdn.net/whaomian/article/details/6820099
发表评论
-
SOCK_STREAM和SOCK_DGRAM
2015-07-23 20:08 1658sock_stream 是有保障的(即能保证数据正确传送到 ... -
SOCKET bind INADDR_LOOPBACK和INADDR_ANY的区别
2015-07-23 19:49 2062今天写程序时候,服务器端启动了,然后客户端总是连接不上,con ... -
htons()
2015-07-23 19:26 589在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺 ... -
使用symbolicatecrash分析crash文件
2015-03-10 11:32 1189原文 http://www.cnblogs.com/ning ... -
程序设计中的计算复用(Computational Reuse)
2015-02-10 10:18 677从斐波那契数列说起 ... -
didReceiveMemoryWarning
2015-02-09 16:11 548IPhone下每个app可用的内存是被限制的,如果一个app使 ... -
iOS开发中怎么响应内存警告
2015-02-09 16:08 659好的应用应该在系统内存警告情况下释放一些可以重新创建的资源。在 ... -
ASIHTTPRequest多次重复请求的问题
2014-12-17 14:34 648在一个车票订购的项目中,点击一次订购,却生成了2次订单,通过抓 ... -
从 CloudKit 看 BaaS 服务的趋势
2014-09-26 11:51 731从 6 月份 WWDC 苹果发布 ... -
ios编程--AVCapture编程理解
2014-09-26 11:03 9480、媒体采集的几个东西。这里所需要明白的是,在这个流程中,这里 ... -
NSURLProtocol
2014-09-25 10:42 8301、http://nshipster.com/nsurlpro ... -
关于iOS8的extension插件
2014-09-25 10:41 1303关于iOS8的extension插件,有兴趣的同学可以参考一下 ... -
【转】ios app在itunesConnect里面的几种状态
2014-08-05 10:34 1155Waiting for Upload (Yellow) Ap ... -
[转]iOS Dev (45) iOS图标与切片处理工具Prepo
2014-02-07 17:02 1037iOS Dev (45) iOS图标与切片处理工具Prepo ... -
phoneGap开发IOS,JS调用IOS方法/phoneGap插件开发
2014-01-13 17:49 1250前沿 废话不说phoneGap是什么不多介绍,官方网站: h ... -
如何在IOS平台下搭建PhoneGap开发环境(PhoneGap2.5)
2014-01-13 15:23 755由于在下最近在做基于HTML5的跨平台移植,搭建环境的时候着实 ... -
xcode 4 制作静态库详解
2013-12-20 18:27 554最近在做Apple的IOS开发,有开发静态库的需求,本身IOS ... -
【翻译】ios教程-创建静态库
2013-12-20 18:19 3128作者:shede333 主页:htt ... -
封装自己的控件库:iPhone静态库的应用
2013-12-20 17:03 597由于iPhone 控件的极度匮乏和自定义组件在重用上的限制,在 ... -
iphone:使用NSFileManager取得目录下所有文件(遍历所有文件)
2013-11-18 17:56 878From:http://note.sdo.com/u/xiao ...
相关推荐
在iOS应用开发中,苹果提供了强大的地图服务,使得开发者能够轻松地在iPhone、iPad等设备上集成地图功能。本文将详细讲解如何在iPhone开发中调用地图,主要围绕标题“iPhone开发地图调用”展开,结合描述中的“完整...
通过以上步骤,你可以构建一个在iPhone上具有个性化标注的地图应用。理解并熟练运用MapKit的各种特性,能够帮助你创建功能丰富、用户体验优秀的地图应用。在实际开发中,参考提供的源码"MapCallouts",将有助于更好...
在iOS开发中,地图(Map)是一个非常重要的组件,特别是在iPhone、iPad或iPod的应用程序中。本资源"(0009)-iOS/iPhone/iPAD/iPod源代码-地图(Map)-iCodeMap"提供了一个关于自定义地图功能的示例,主要涉及如何...
在本Demo中,开发者将学习如何集成MKMapView,设置其显示区域,以及如何添加自定义的 Annotation(地图标记)来表示特定的地理位置。 在代码实现部分,你将看到如何监听位置更新并更新地图上的标注。当用户的位置...
在iOS开发中,地图应用是常见且至关重要的功能之一,特别是在iPhone、iPad和iPod等设备上。本教程将深入探讨如何实现自定义复杂的Map Annotation,以提供更丰富的地图体验。我们将关注`MKAnnotation`协议的使用,...
在这个名为"custom_callout_part1_src"的项目中,我们将探讨如何实现iPhone地图上点击Annotation后展示自定义Callout的第一部分源代码。 1. **自定义Annotation**: 在MapKit中,我们首先需要创建一个自定义...
在iOS开发中,创建地图应用是一项常见的任务,特别是在iPhone平台上。本教程将深入探讨如何使用Xcode和Apple的MapKit框架来创建一个基本的地图应用程序。MapKit提供了丰富的功能,包括定位用户位置、显示地图、添加...
在iOS开发中,地图(Map)是用户界面中的一个重要组成部分,特别是在地理位置相关应用中。Map Callouts是地图上用于提供更多信息的扩展元素,如标注(Annotation)的详细信息或额外的操作按钮。本文将深入探讨如何在iOS...
本项目“custom_callouts_part2_src”专注于讲解如何在iPhone地图应用中实现点击Annotation时展示自定义Callouts,即自定义的信息气泡。这个功能在很多地理定位应用中非常常见,比如导航、旅游或生活服务类应用,它...
在iOS应用开发中,集成百度地图是一项常见的需求,它能够为用户提供定位、导航等功能。本教程将指导开发者如何在自己的iOS应用中集成百度地图服务,通过一个完整的DEMO程序进行说明。首先,我们需要了解以下几个关键...
在iOS开发中,地图应用是常见且重要的功能之一,尤其是对于iPhone、iPad和iPod Touch等设备。本项目“(0051)-iOS/iPhone/iPAD/iPod源代码-地图(Map)-Customized Callout MKAnnotation”专注于自定义地图标注...
这篇教程将详细介绍如何在iPhone应用中实现在百度地图上显示当前位置并添加大头针标记。 首先,你需要在你的Xcode项目中引入百度地图SDK。可以通过访问百度地图开放平台(http://lbsyun.baidu.com/)注册开发者账号...
这个“ios iphone天气预报例子”提供了全面的功能,包括地图集成、GPS定位、导航以及城市添加等,这些都是构建一个实用天气应用不可或缺的部分。接下来,我们将深入探讨这些关键知识点。 1. **iOS SDK与Xcode**:...
苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及Apple TV等苹果产品上。iOS与苹果的Mac OS X操作系统一样,它也是以Darwin为基础的,因此...