前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >iOS地图找房(类似链家、安居客等地图找房)

iOS地图找房(类似链家、安居客等地图找房)

作者头像
Raindew
发布于 2018-06-14 06:32:15
发布于 2018-06-14 06:32:15
1.5K00
代码可运行
举报
运行总次数:0
代码可运行
题外话:在百度搜索键入:iOS地图找房。你会发现搜索到很多关于这方面的帖子,但是几乎都是询问如何实现的,找不到一个可以研究借鉴的博客。于是我决定补上这个空缺,写的可能不全面,大家体谅。

更新PS:原本我是没打算写Demo出来的,但博客发出来后很多人要,因为网络请求不能发出来,请理解。我把Demo中的网络请求全部干掉了,真正做这个项目的可以加入网络请求,或者花点功夫模拟请求。最后如果觉得有用给个关注或喜欢,谢谢。

先看下美工出的效果图。
下面说说实现的步骤,仍然以代码加注解的方式说明。我尽量说的详尽,其实这个模块难度一般,应该很好理解的,如果有看不懂的给我留言就行了。
分析:第一次进地图要添加很多圆形的大区标识,这时候比例尺应该是整个市区的大小。当点击这个圆形,可以进去小区的房源,这个房源是一个消息框形式的标识,当比例尺在大区,地图移动的时候应该是不允许在更新房源的,当小区的时候,需要更新,而且我们猜测这个更新不能太频繁,可能我们需要设定一个移动距离。同时,大小区的切换,地图放大到某个比例尺切换至小区,地图缩小,切换到大区。

需要做的事情:定义两种标识。添加大区、小区标识。放大缩小后,大小区的判断显示。移动地图大小区的更新。点击大小区不同的响应。 文末我会放上效果GIF。 首先,创建地图,设置比例尺,定位个人位置。比例尺的设定说明下,我这里给了一个自己定义的范围,因为我不希望用户无限放大地图或者无限缩小。最小我希望他看到小区的大小即可,最大差不多展示整个南京市即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    self.mapView = [[BMKMapView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
    [self.view addSubview:self.mapView];
    self.locService = [[BMKLocationService alloc] init];
    self.mapView.delegate = self;
    self.locService.delegate = self;
    self.mapView.showsUserLocation = YES;
    self.mapView.showMapScaleBar = YES;//显示比例尺
    self.mapView.mapScaleBarPosition = CGPointMake(10, 75);//比例尺位置
    self.mapView.minZoomLevel = 11;
    self.mapView.maxZoomLevel = 17;
    self.mapView.userTrackingMode = BMKUserTrackingModeNone;
    [self.locService startUserLocationService];

从效果图中大家能够看出,一共两个大头针样式,一个圆形的,一个是对话框形式。你可以理解为这就是一个大头针,只不过是换了图片而已,那么如何定义自己想要的样式呢? 首先定义一个圆形的大头针,可能需要主标题和副标题

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#import <BaiduMapAPI_Map/BMKMapComponent.h>

@interface YLRoundAnnotationView : BMKAnnotationView
@property(nonatomic, strong) NSString *title;
@property(nonatomic, strong) NSString *subTitle;
@end

.m中去实现外观的定义

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@interface YLRoundAnnotationView ()
@property(nonatomic, strong) UILabel *titleLabel;
@property(nonatomic, strong) UILabel *subTitleLabel;

@end

@implementation YLRoundAnnotationView

- (id)initWithAnnotation:(id<BMKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier {
    if (self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier]) {
        [self setBounds:CGRectMake(0.f, 0.f, 80, 80)];
        [self setContentView];
    }
    return self;
}

- (void)setContentView {

    UIColor *color = [UIColor colorWithRed:234/255. green:130/255. blue:80/255. alpha:1];
    self.layer.cornerRadius = 40;
    self.layer.borderColor = color.CGColor;
    self.layer.borderWidth = 1;
    self.layer.masksToBounds = YES;
    self.backgroundColor = color;
    self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 5, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame)/2.5)];
    self.titleLabel.textAlignment = NSTextAlignmentCenter;
    self.titleLabel.font = font(15);
    self.titleLabel.textColor = [UIColor whiteColor];
    self.titleLabel.layer.masksToBounds = YES;
    [self addSubview:self.titleLabel];
   
    self.subTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.titleLabel.frame), CGRectGetWidth(self.frame), CGRectGetHeight(self.frame)/3)];
    
    self.subTitleLabel.textAlignment = NSTextAlignmentCenter;
    self.subTitleLabel.font = font(13);
    self.subTitleLabel.textColor = [UIColor whiteColor];
    self.subTitleLabel.layer.masksToBounds = YES;
    [self addSubview:self.subTitleLabel];
}

- (void)setTitle:(NSString *)title {
    _title = title;
    self.titleLabel.text = title;
}
- (void)setSubTitle:(NSString *)subTitle {
    _subTitle = subTitle;
    self.subTitleLabel.text = subTitle;
}

上面我们重写了大头针的bound设置了圆角,然后在里面添加了两个标题。 下面我们定义第二个大头针,消息框模式的。仍旧仿造上面代码...

.h

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#import <BaiduMapAPI_Map/BMKMapComponent.h>

@interface YLMessageAnnotationView : BMKAnnotationView
@property(nonatomic, strong) NSString *title;
@end

.m

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@interface YLMessageAnnotationView ()
@property(nonatomic, strong) UIButton *contentView;

@end

@implementation YLMessageAnnotationView

- (id)initWithAnnotation:(id<BMKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier {
    if (self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier]) {
        [self setBounds:CGRectMake(0.f, 0.f, 80, 30)];
        [self setContentView];
    }
    return self;
}

- (void)setContentView {

    self.contentView = [UIButton buttonWithType:UIButtonTypeCustom];
    self.contentView.frame = self.bounds;
    self.contentView.userInteractionEnabled = NO;
    self.contentView.titleLabel.textAlignment = NSTextAlignmentCenter;
    [self.contentView setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [self.contentView setBackgroundImage:[UIImage imageNamed:@"community"] forState:UIControlStateNormal];
    self.contentView.titleEdgeInsets = UIEdgeInsetsMake(-5, 0, 0, 0);
    self.contentView.titleLabel.font = font(10);
    [self addSubview:self.contentView];

}
- (void)setTitle:(NSString *)title {
    _title = title;
    [self.contentView setTitle:title forState:UIControlStateNormal];
}

为什么放一个Button,因为方便标题和背景设置... ok 定义完成。我们就可以去网络请求添加大头针了。 如何添加,两种情况:当比例尺很大的时候请求一种大头针,小的时候另一种大头针

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {

    NSLog(@"更改了区域");
    NSLog(@"当前比例尺%f,过去比例尺:%f",mapView.zoomLevel,self.zoomValue);
//    NSLog(@"中心点经纬度 :%f,%f",mapView.centerCoordinate.latitude,mapView.centerCoordinate.longitude);
    
    if (mapView.zoomLevel > self.zoomValue) {
        NSLog(@"地图放大了");
    }else if (mapView.zoomLevel < self.zoomValue){
        NSLog(@"地图缩小了");
    }
    
    if (mapView.zoomLevel > 14) {
        //请求小区
        //当没有放大缩小 计算平移的距离。当距离小于2千米。不再进行计算  避免过度消耗
        float distance = [self distanceBetweenFromCoor:self.oldCoor toCoor:mapView.centerCoordinate];
        if (distance <= 1000 && mapView.zoomLevel == self.zoomValue) {
            return;
        }
        [self loadCityAreaHouseWithScale:@"1000" andLatitude:[NSString stringWithFormat:@"%f",mapView.centerCoordinate.latitude]  andLongitude:[NSString stringWithFormat:@"%f",mapView.centerCoordinate.longitude] andHouseType:self.houseType andRentType:self.rentType andHouseSize:self.houseSize andMinPrice:self.minPrice andMaxPrice:self.maxPrice];

    }else if(mapView.zoomLevel <= 14) {
        if (mapView.zoomLevel == self.zoomValue) {//当平移地图。大区不再重复请求
            return;
        }
        //请求大区
        [self loadCityAreaHouseWithScale:@"3000" andLatitude:@"" andLongitude:@"" andHouseType:self.houseType andRentType:self.rentType andHouseSize:self.houseSize andMinPrice:self.minPrice andMaxPrice:self.maxPrice];
    }
}

在上面这个代理方法中,当比例尺大于14我请求小区的房源。而且我做了个判断,当没有放大缩小 计算平移的距离。当距离小于2千米。不再进行计算 避免过度消耗。当比例尺小于等于14我请求大区的房源。而且当地图平移的时候,不再请求。如何判断地图是否平移和平移后的距离?根据上面if再看下面代码就明白了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)mapView:(BMKMapView *)mapView regionWillChangeAnimated:(BOOL)animated {
    self.zoomValue = mapView.zoomLevel;
    self.oldCoor = mapView.centerCoordinate;
    NSLog(@"之前的比例尺:%f",mapView.zoomLevel);
}

如上,通过地图移动前的中心点经纬度和比例尺去与移动后的做比较即可。 下面看下网络请求的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//请求城市区域内的房源组
- (void)loadCityAreaHouseWithScale:(NSString *)scale andLatitude:(NSString *)latitude andLongitude:(NSString *)longitude andHouseType:(NSString *)houseType andRentType:(NSString *)rentType andHouseSize:(NSString *)houseSize andMinPrice:(NSString *)minPrice andMaxPrice:(NSString *)maxPrice {
    WeakSelf
    [SVProgressHUD show];
    [MapFindHouseViewModel mapFindHouseWithLatitude:latitude andLongitude:longitude andScale:scale andHouseType:houseType andRentType:rentType andHouseSize:houseSize andMinPrice:minPrice andMaxPrice:maxPrice andBlock:^(id result) {
        NSArray *data = result;
        if (data.count > 0) {
            [weakSelf.mapView removeAnnotations:weakSelf.mapView.annotations];
            if ([scale isEqualToString:@"3000"]) {//请求大区
                for (NSDictionary *dic in data) {
                    YLAnnotationView *an = [[YLAnnotationView alloc] init];
                    CLLocationCoordinate2D coor;
                    coor.latitude = [dic[@"lat"] floatValue];
                    coor.longitude = [dic[@"lng"] floatValue];
                    an.type = 1;
                    an.coordinate = coor;
                    an.title = dic[@"description"];
                    an.subtitle = [NSString stringWithFormat:@"%@套",dic[@"houses"]];
                    an.Id = dic[@"id"];
                    [weakSelf.mapView addAnnotation:an];
                }

            }else if([scale isEqualToString:@"1000"]) {//请求小区
                for (NSDictionary *dic in data) {
                    YLAnnotationView *an = [[YLAnnotationView alloc] init];
                    CLLocationCoordinate2D coor;
                    coor.latitude = [dic[@"lat"] floatValue];
                    coor.longitude = [dic[@"lng"] floatValue];
                    an.type = 2;
                    an.coordinate = coor;
                    an.title = [NSString stringWithFormat:@"%@ | %@套",dic[@"description"],dic[@"houses"]];
                    an.Id = dic[@"id"];
                    [weakSelf.mapView addAnnotation:an];
                }
            }
        }else {
            [SVProgressHUD showInfoWithStatus:@"无房源!请更改条件~"];
        }
    }];
}

前面我传进来一个scale来标明到底是大区还是小区。3000代表大区,反之小区。然后解析数据用一个大头针模型YLAnnotationView 来接收。最终把大头针模型加入地图。这时候就会走大头针的数据源方法了。如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (BMKAnnotationView *)mapView:(BMKMapView *)view viewForAnnotation:(id <BMKAnnotation>)annotation {
    // 生成重用标示identifier
    YLAnnotationView *anno = (YLAnnotationView *)annotation;
    if (anno.type == 1) {
        NSString *AnnotationViewID = @"round";
        // 检查是否有重用的缓存
        YLRoundAnnotationView *annotationView = (YLRoundAnnotationView *)[view dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID];
        
        // 缓存没有命中,自己构造一个,一般首次添加annotation代码会运行到此处
        if (annotationView == nil) {
            annotationView = [[YLRoundAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID];
            annotationView.paopaoView = nil;
        }
        // 设置偏移位置
        annotationView.centerOffset = CGPointMake(0, -(annotationView.frame.size.height * 0.5));
        annotationView.title = anno.title;
        annotationView.subTitle = anno.subtitle;
        annotationView.annotation = anno;
        annotationView.canShowCallout = NO;
        return annotationView;
        
    }else {
        
        NSString *AnnotationViewID = @"message";
        // 检查是否有重用的缓存
        YLMessageAnnotationView *annotationView = (YLMessageAnnotationView *)[view dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID];
        // 缓存没有命中,自己构造一个,一般首次添加annotation代码会运行到此处
        if (annotationView == nil) {
            annotationView = [[YLMessageAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID];
            annotationView.paopaoView = nil;
        }
        // 设置偏移位置
        annotationView.centerOffset = CGPointMake(0, -(annotationView.frame.size.height * 0.5));
        annotationView.title = anno.title;
        annotationView.annotation = anno;
        annotationView.canShowCallout = NO;
        return annotationView;
    }
}

在网络请求哪里我给不同区域请求设置了type。这里正好用来判断大头针的显示。这样就做好了区别 最后你可能需要为这个大头针添加点击事件,那么只需要实现这个代理方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//点击了大头针
- (void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view {
    if (view.annotation.coordinate.latitude == self.locService.userLocation.location.coordinate.latitude) {//个人位置特殊处理,否则类型不匹配崩溃
        NSLog(@"点击了个人位置");
        return;
    }
    YLAnnotationView *annotationView = (YLAnnotationView *)view.annotation;
    if (annotationView.type == 2) {
        self.areaTitle = annotationView.title;
        //取消大头针的选中状态,否则下次再点击同一个则无法响应事件
        [mapView deselectAnnotation:annotationView animated:NO];
        //计算距离 --> 请求列表数据 --> 完成 --> 展示表格
        self.communityId = annotationView.Id;
        //计算小区到个人位置的距离
        self.distanceText = [NSString stringWithFormat:@"离我:%.1fkm",[self distanceBetweenFromCoor:annotationView.coordinate toCoor:self.locService.userLocation.location.coordinate] / 1000];
        [self loadNewListData];
    }else {
        //点击了区域--->进入小区
        //拿到大头针经纬度,放大地图。然后重新计算小区
        [mapView setCenterCoordinate:annotationView.coordinate animated:NO];
        [mapView setZoomLevel:16];
    }
}

在上面我做了一个特殊判断,点击个人位置直接return了。如果不这样可能会程序crash。点击小区我弹出一个房源列表,点击大区,我先移动地图中心点到点击的位置,再把地图放大。注意这个顺序,而且必须不能使用动画。 基本上核心代码就这些了,当然我还做了很多别的功能,例如搜索和检索等...附加功能不再说明。

结语:其实这个功能本身应该是使用百度地图的 高聚合 功能,有兴趣的同学可以去了解这个功能,但是就实际而言,这样重写大头针更好一些。

最后上个效果图吧! iOS技术交流群:511860085 欢迎加入!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.05.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ios百度地图开发之显示标注
才能将annoView显示到地图上. 如果是自定义的paopaoView,BMKMapViewDelegate会有如下方法:
hrscy
2018/08/30
1K0
ios地图小例子和手势的使用 供大家参考一下呦
最近做了一个小例子 做点笔记 供刚入职场的菜鸟学习,也供自己记忆。 目标:在地图上加上标记  同时复习一下手势的使用 效果图: 具体代码 导入框架:MapKit.framework 创建一个新类 继承NSObject  叫做MyAnnotation   并在后边加上<MKAnnotation> #import <Foundation/Foundation.h> #import <MapKit/MapKit.h> @interface MyAnnotation : NSObject<MKAnnotation>
用户1219438
2018/02/01
8500
iOS百度地图POI详情检索与路径规划(附Demo)
POI(Point of Interest)中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。 写在前面:最近老是有朋友来问我这个检索怎么不行了,我今天看了下,果然,出了问题,似乎是百度地图的一个Bug。POI检索后调POI详情检索,但是详情检索出来的经纬度全部是0,这样自然是不能够成功添加大头针的。奇怪的是在POI检索中经纬度是有的,但是呢,详情中经纬度竟然丢失了。这个只能等百度那边修复了,当然我这里提供一个临时解决这个办法的方法。在文末我上
Raindew
2018/06/14
1.8K0
iOS开发-用户定位获取-CoreLocation的实际应用-CLLocationManger获取定位权限-CLLocation详细使用方式
iOS提供了两个框架用来定位以及地图显示。CoreLocation框架包含的类可以帮助设备确定位置和航向以及使用基于位置的有效信息。MapKit框架未定位提供了户用页面的支持(地图显示),里面包含了地图视图、卫星地图视图以及2D、3D混合视图,并且能够让开发人员管理地图标注和地图覆盖层,前者 用于标注地点(常见的地图大头针),后者用来突出某区域或者路线等。
全栈程序员站长
2022/09/17
4.5K0
iOS开发-用户定位获取-CoreLocation的实际应用-CLLocationManger获取定位权限-CLLocation详细使用方式
iOS原生地图开发指南续——大头针与自定义标注
在上一篇博客中http://my.oschina.net/u/2340880/blog/415360系统总结了iOS原生地图框架MapKit中主体地图的设置与应用。这篇是上一篇的一个后续,总结了系统的大头针视图以及自定义标注视图的方法。
珲少
2018/08/16
1.1K0
iOS原生地图开发指南续——大头针与自定义标注
iOS百度地图开发之路径规划
路线规划 示例程序 使用百度地图SDK版本为2.9.1。 需要将改 代码: #import <MapKit/MapKit.h> #import <BaiduMapAPI_Map/BMKMapView.h> #import <BaiduMapAPI_Location/BMKLocationService.h> #import <BaiduMapAPI_Search/BMKSearchComponent.h> #import <BaiduMapAPI_Map/BMKPolylineView.h> #impor
hrscy
2018/08/30
1.3K0
iOS百度地图开发之路径规划
iOS_系统自带地图圆形区域选择范围
5.聚集操作:删除原理的大头针,在新经纬度添加大头针,并将地图移动到新的经纬度(反地理编码获得位置信息)
mikimo
2022/07/20
2.3K0
iOS_系统自带地图圆形区域选择范围
地图相关 MapKit框架介绍MKMapView控件对象的属性和方法MKAnnotation 大头针模型类大头针view显示类:MKPinAnnotationView 继承于 MKAnnotation
介绍 1.概念 导入头文件 #import <MapKit/MapKit.h> MapKit框架中所有数据类型的前缀都是MK MapKit有一个比较重要的UI控件 :MKMapView,专门用于地图显
用户2141756
2018/05/18
4.9K0
【IOS开发基础系列】地图开发专题
http://www.cnblogs.com/syxchina/archive/2012/10/14/2723522.html
江中散人_Jun
2023/10/16
3770
【IOS开发基础系列】地图开发专题
iOS原生地图开发进阶——使用导航和附近兴趣点检索
iOS中的mapKit框架对国际化的支持非常出色。在前些篇博客中,对这个地图框架的基础用法和标注与覆盖物的添加进行了详细的介绍,这篇博客将介绍两个更加实用的功能的开发:线路导航与兴趣点搜索。前几篇博客的链接如下:
珲少
2018/08/16
9630
iOS原生地图开发进阶——使用导航和附近兴趣点检索
iOS百度地图问题总结(三)
如果想创建以静态图片作为大头针图片的话,可以通过创建MKAnnotationView是实例。如果想使用apple自带的大头针则创建MKPinAnnotationView.
hrscy
2018/08/30
1.2K0
iOS百度地图问题总结(三)
Objective-C MapKit的使用-LBS简单的租车主界面demo效果分析代码demo地址
https://github.com/gongxiaokai/EasyCarDemo
gwk_iOS
2018/08/23
2K0
Objective-C MapKit的使用-LBS简单的租车主界面demo效果分析代码demo地址
地图| 高德地图源码级使用大全
高德地图提供包括:web前端、Android、iOS、服务器、小程序等平台的地图服务, 地图功能众多,本文记载的只是自己遇到的一些问题,绝大部分功能只要参照官方文档和Dome都可以实现出来。
進无尽
2018/09/12
4.5K0
地图| 高德地图源码级使用大全
iOS开发之地图
在iOS开发中,地图也是很多App都需要使用的功能。本文主要对iOS中的地图知识点进行介绍。需要说明的是地图看似很复杂,其实它仅仅是一个控件,就和UIButton、UITableView等一样。本文代码环境为:Xcode 10.2。
YungFan
2019/05/10
1.2K0
iOS开发之地图
iOS地图----MapKit框架
1.MapKit框架使用前提 ①导入框架 ②导入主头文件 #import <MapKit/MapKit.h> ③MapKit框架使用须知 MapKit框架中所有数据类型的前缀都是MK MapKit有一
用户1941540
2018/05/11
1.5K0
iOS 百度地图 Demo
3.iOS 9 之后不能直接使用 HTTP 进行请求,需要在 Info.plist 新增一段用于控制 ATS 的配置:
hrscy
2018/08/30
1.1K0
iOS 百度地图 Demo
腾讯位置服务教你轻松搞定微信发送位置功能
微信的发送位置功能是一个十分方便的功能,他会定位用户当前所在地点,然后请求用户周边的POI,并且还可以通过拖动地图来获取其他的位置发送给对方,本Demo是结合腾讯地图SDK来实现类似的功能。
腾讯位置服务
2020/07/31
1.2K0
地图| 百度地图源码级使用大全
由于百度地图自带的BMKAnnotationView 中默认的是大头针,可以设置自定义图片(替换大头针),但是就是无法在地图上放置Label显示文字,本来想让所有大头针的气泡都默认弹出(设置 selected 就行),可是找不到一个方法使所有的气泡都弹出,最后只能自定义一个基于BMKAnnotationView的UIView
進无尽
2018/09/12
1.7K0
地图| 百度地图源码级使用大全
iOS原生地图开发指南 原
在上一篇博客中:http://my.oschina.net/u/2340880/blog/414760。对iOS中的定位服务进行了详细的介绍与参数说明,在开发中,地位服务往往与地图框架结合使用,这篇博客主要对iOS官方的地图框架MapKit.framework进行介绍。
珲少
2018/08/16
1.2K0
iOS原生地图开发指南
                                                                            原
iOS iOS 地图与定位开发系列教程
iPhone SDK提供了三个类来管理位置信息:CLLocation CLLocationManager 和 CLLHeading(不常用)。除了使用GPS来获取当前的位置信息外,iPhone也可以基于WiFi基站和无线发射塔来获得位置信息。GPS的精度最高,可以精确到米级别,但是也最耗电。
全栈程序员站长
2022/09/17
2.3K0
推荐阅读
相关推荐
ios百度地图开发之显示标注
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文