位置与地图(三)给地图加入覆盖层

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];
    self.mapView.mapType = MKMapTypeStandard;
    self.mapView.scrollEnabled = YES;
    //  设置地图不可旋转
    self.mapView.rotateEnabled = NO;
    self.mapView.zoomEnabled = YES;
    self.mapView.showsUserLocation = YES;

    //  设置地图中心的经纬度
    CLLocationCoordinate2D center = {39.910650,116.47030};
    //  设置地图显示的范围,数值越小细节越清楚
    MKCoordinateSpan span = {0.01,0.01};
    //  二者合一设置显示区域
    MKCoordinateRegion region = {center,span};
    [self.mapView setRegion:region animated:YES];

    [self.view addSubview:self.mapView];

    UILongPressGestureRecognizer *longGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
    [self.mapView addGestureRecognizer:longGesture];

    //  设置代理
    self.mapView.delegate = self;

}

- (void)longPress:(UILongPressGestureRecognizer *)longGesture{

    //  获取长按点得坐标
    CGPoint postion = [longGesture locationInView:self.mapView];
    //  将长按点坐标转换为经纬度
    CLLocationCoordinate2D coord2D = [self.mapView convertPoint:postion toCoordinateFromView:self.mapView];
    //  创建一个圆形覆盖层对象
    MKCircle *circle = [MKCircle circleWithCenterCoordinate:coord2D radius:100];
    //  将单个的覆盖层加入到指定的层级
    [self.mapView addOverlay:circle level:MKOverlayLevelAboveLabels];

}

//  该方法返回的MKOverlayRenderer负责绘制覆盖层控件
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay{

    MKCircle *circle = (MKCircle *)overlay;
    // iOS7之后,推荐使用MKXxxRenderer来负责渲染覆盖层控件
    MKCircleRenderer *circleRend = [[MKCircleRenderer alloc] initWithCircle:circle];
    circleRend.alpha = 0.3;
    //  填充颜色
    circleRend.fillColor = [UIColor blueColor];
    //  边框颜色
    circleRend.strokeColor = [UIColor redColor];

    return circleRend;
}

/*********iOS7新增的MKTileOverlay覆盖层*******************************************
- (void)longPress:(UILongPressGestureRecognizer *)longGesture{

    //  指定本地图片覆盖
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"hmt" withExtension:@"png"];
    MKTileOverlay *tileOverlay = [[MKTileOverlay alloc] initWithURLTemplate:[url description]];
    [self.mapView addOverlay:tileOverlay];

}

//  该方法返回的MKOverlayRenderer负责绘制覆盖层控件
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay{

    MKTileOverlayRenderer *tileRender = [[MKTileOverlayRenderer alloc] initWithOverlay:(MKTileOverlay *)overlay];
    tileRender.alpha = 0.2;
    return circleRend;
}
*/

时间: 2024-11-15 00:35:55

位置与地图(三)给地图加入覆盖层的相关文章

位置与地图(三)给地图添加覆盖层

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.mapView = [[MKMapView alloc] initWithFrame:self.view.bounds]; self.mapView.mapType = MKMapTypeStandard; self.mapView.scrollEnabled = YES; // 设置地图不可旋转 s

Android开发笔记(一百零三)地图与定位SDK

集成地图SDK 国内常用的地图SDK就是百度和高德了,二者的用法大同小异,可按照官网上的开发指南一步步来.下面是我在集成地图SDK时遇到的问题说明: 1.点击基本地图功能选项,不能打开地图,弹出"key验证出错!请在AndroidManifest.xml文件中检查key设置的"的红色字提示.查看日志提示"galaxy lib host missing meta-data,make sure you know the right way to integrate galaxy&

Android--百度地图之基础地图(三)

开发者可利用SDK提供的接口,使用百度为您提供的基础地图数据.目前百度地图SDK所提供的地图等级为3-21级,所包含的信息有建筑物.道路.河流.学校.公园等内容. V3.7.0起,地图支持缩放至21级,暂不支持卫星图.热力图.交通路况图层的21级显示,打开以上类型图层,地图会自动缩放到20级. 所有叠加或覆盖到地图的内容,我们统称为地图覆盖物.如标注.矢量图形元素(包括:折线.多边形和圆等).定位图标等.覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动. 百度地图SDK为广大开发

百度地图、高德地图的数据从哪里得到的?[声明我只是此文章的搬运工,从百度知道复制来的]

要说数据来源,首先得对地图数据做一个分类,因为不同分类的数据,其来源,采集方法都是有大不同的. 要明白地图的数据分类,必须先理解一个概念,就是地图图层的概念: 如上图,电子地图对我们实际空间的表达,事实上是通过不同的图层去描述,然后通过图层叠加显示来进行表达的过程. 对于我们地图应用目标的不同,叠加的图层也是不同的,用以展示我们针对目标所需要信息内容. 其次呢,我引入一下矢量模型和栅格模型的概念,GIS(电子地图)采用两种不同的数学模型来对现实世界进行模拟: 矢量模型:同多X,Y(或者X,Y,Z

百度地图、高德地图的数据从哪里得到的?

要说数据来源,首先得对地图数据做一个分类,因为不同分类的数据,其来源,采集方法都是有大不同的. 要明白地图的数据分类,必须先理解一个概念,就是地图图层的概念:        如上图,电子地图对我们实际空间的表达,事实上是通过不同的图层去描述,然后通过图层叠加显示来进行表达的过程. 对于我们地图应用目标的不同,叠加的图层也是不同的,用以展示我们针对目标所需要信息内容. 其次呢,我引入一下矢量模型和栅格模型的概念,GIS(电子地图)采用两种不同的数学模型来对现实世界进行模拟: 矢量模型:同多X,Y(

微信JS-SDK之地理位置的获取与在线导航,集成百度地图实现在线地图搜索

原创声明:本文来源于本人另一博客[微信JS-SDK之地理位置的获取,集成百度地图实现在线地图搜索]原创作品,绝非他处摘取,转载请联系博主 本次讲解微信开发第三篇:获取用户地址位置信息,是非常常用的功能,特别是服务行业公众号,尤为需要该功能,本次讲解的就是如何调用微信JS-SDK接口,获取用户位置信息,并结合百度地铁,实现在线地图搜索,与在线导航. 官方文档地址:https://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.htm

网页嵌入百度地图和使用百度地图api自定义地图的详细步骤

在网页中插入百度地图 如果想在自己的网页上面加入百度地图的话,可以用百度地图的api.具体使用方法如下: 第一步:进入百度创建地图的网站http://api.map.baidu.com/lbsapi/creatmap/,搜索出自己要展示的位置,如下图所示. 第二步:设置地图,大家可以对网站显示地图的宽高进行设置,其余选项不动. 第三步:添加标注.点击第一个图标后,在右侧找到自己的位置,单击鼠标左键可定位.标记图标处可更换图标形状,名称和备注填入位置相关信息. 第四步:获取代码.将代码贴到你的网页

ios 一步一步学会自定义地图吹出框(CalloutView)--&gt;(百度地图,高德地图,google地图)

前言 在 ios上边使用地图库的同学肯定遇到过这样的问题:吹出框只能设置title和subtitle和左右的view,不管是百度地图还是高德地图还是自带的 google地图,只提供了这四个属性,如果想添加更多的view,只能自定义.可是,类库只能看到.h文件,.m都看不到,这让新手比较蛋疼,庞大的地 图类库一时半会摸不着头脑,从头再学还需要时间,本文就教大家快速制作一个属于自己的 CalloutView!等你一步一步调通后,再回过头来使用系统自带的方法设置callout,就会领悟这个过程. 正文

百度、高德开撕地图,手机地图第一争霸背后的阳谋

百度更多是C端用户使用频率更高,高德在B端用途更大,地图争霸,目标却是O2O 文/张书乐 这个周末,地图行业第一之争的舆论战打得火热.此次口水战的起源是高德单方面宣称"已成为行业第一",隔空喊话百度地图"不服来战",并宣称将允许第三方数据公司QuestMobile监测验证.百度地图第一时间发文回应,甩出三家权威机构数据和用户评测结果,吊打高德数据"掺水".不过,高德并未消停,仍放话坚持用第三方数据说话.面对友商如是挑衅,百度地图官方再度强势回应,