iOS开发之离线地图核心代码_IOS

一,效果图。

二,工程图。

三,代码。

ViewController.h

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
#import "MapLocation.h"
@interface ViewController : UIViewController
<MKMapViewDelegate>
{
  MKMapView *_mapView;
  NSString *addressString;
}
@end 

ViewController.m

 #import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view.
  //调用系统自带的高德地图
  //显示当前某地的离线地图
  _mapView = [[MKMapView alloc] init];
  _mapView.frame = CGRectMake(0, 40, 320,400);
  _mapView.delegate = self;
  _mapView.mapType = MKMapTypeStandard;
  [self.view addSubview:_mapView];
  addressString=@"光启城";
  NSLog(@"---addressString---%@",addressString);
  [self geocodeQuery];
}
- (void)geocodeQuery{
  if (addressString == nil || [addressString length] == 0) {
    return;
  }
  CLGeocoder *geocoder = [[CLGeocoder alloc] init];
  [geocoder geocodeAddressString:addressString completionHandler:^(NSArray *placemarks, NSError *error) {
    NSLog(@"查询记录数:%ld",[placemarks count]);
    if ([placemarks count] > 0) {
      [_mapView removeAnnotations:_mapView.annotations];
    }
    for (int i = 0; i < [placemarks count]; i++) {
      CLPlacemark* placemark = placemarks[i];
      //调整地图位置和缩放比例
      MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(placemark.location.coordinate, 10000, 10000);
      [_mapView setRegion:viewRegion animated:YES];
      MapLocation *annotation = [[MapLocation alloc] init];
      annotation.streetAddress = placemark.thoroughfare;
      annotation.city = placemark.locality;
      annotation.state = placemark.administrativeArea;
      annotation.zip = placemark.postalCode;
      annotation.coordinate = placemark.location.coordinate;
      [_mapView addAnnotation:annotation];
    }
  }];
}
#pragma mark Map View Delegate Methods
- (MKAnnotationView *) mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>) annotation {
  MKPinAnnotationView *annotationView
  = (MKPinAnnotationView *)[_mapView dequeueReusableAnnotationViewWithIdentifier:@"PIN_ANNOTATION"];
  if(annotationView == nil) {
    annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation
                             reuseIdentifier:@"PIN_ANNOTATION"];
  }
  annotationView.pinColor = MKPinAnnotationColorPurple;
  annotationView.animatesDrop = YES;
  annotationView.canShowCallout = YES;
  return annotationView;
}
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
  _mapView.centerCoordinate = userLocation.location.coordinate;
}
- (void)mapViewDidFailLoadingMap:(MKMapView *)theMapView withError:(NSError *)error {
  NSLog(@"error : %@",[error description]);
}
@end 

MapLocation.h

#import <MapKit/MapKit.h>
@interface MapLocation : NSObject<MKAnnotation>
//街道信息属性
@property (nonatomic, copy) NSString *streetAddress;
//城市信息属性
@property (nonatomic, copy) NSString *city;
//州、省、市信息
@property (nonatomic, copy) NSString *state;
//邮编
@property (nonatomic, copy) NSString *zip;
//地理坐标
@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;
@end 

 MapLocation.m

//地图调用函数
#import "MapLocation.h"
@implementation MapLocation
- (NSString *)title {
  return @"您的位置!";
}
- (NSString *)subtitle {
  NSMutableString *ret = [NSMutableString new];
  if (_state)
    [ret appendString:_state];
  if (_city)
    [ret appendString:_city];
  if (_city && _state)
    [ret appendString:@", "];
  if (_streetAddress && (_city || _state || _zip))
    [ret appendString:@" • "];
  if (_streetAddress)
    [ret appendString:_streetAddress];
  if (_zip)
    [ret appendFormat:@", %@", _zip];
  return ret;
}
@end

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索离线地图开发
ios离线地图开发、ios高德离线地图开发、百度地图api离线开发、离线地图开发、百度离线地图开发,以便于您获取更多的相关知识。

时间: 2024-09-12 01:04:24

iOS开发之离线地图核心代码_IOS的相关文章

iOS中navigationController 去掉背景图片、去掉底部线条的核心代码_IOS

废话不多说了,直接给大家贴iOS中navigationController 去掉背景图片.去掉底部线条的核心代码,关键代码如下所示: //去掉背景图片     复制代码 代码如下:  [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; //去掉底部线条 复制代码 代码如下:     [self.navigatio

iOS开发————详解适配iOS10问题_IOS

2016年9月7日,苹果发布iOS 10.2016年9月14日,全新的操作系统iOS 10将正式上线. 作为开发者,如何适配iOS10呢? 1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserNotifications的易用,功能也变得非常强大. •iOS 9 以前的通知 1.在调用方法时,有些方法让人很难区分,容易写错方法,这让开发者有时候很苦恼.

iOS开发系列--详细介绍数据存取_IOS

概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储,包括偏好设置其本质都是存储为文件,只是说归档或者plist文件存储可以选择保存到沙盒中,而偏好设置系统已经规定只能保存到沙盒的Library/Preferences目录.当然,文件存储并不作为本文的重点内容.本文重点还是说数据库存储,做过数据库开发的朋友应该知道,可以通过SQL直接访问数据库,也可以

iOS开发之自定义UITextField的方法_IOS

UITextField是IOS开发中用户交互中重要的一个控件,常被用来做账号密码框,输入信息框等. 观察效果图 UITextField有以下几种特点: 1.默认占位文字是灰色的 2.当光标点上去时,占位文字变为白色 3.光标是白色的 接下来我们通过不同的方法来解决问题 一.将xib中的UITextField与代码关联 通过NSAttributeString方法来更改占位文字的属性 (void)viewDidLoad { [super viewDidLoad]; // Do any additio

iOS开发 全机型适配解决方法_IOS

最近做项目,对于IPhone 手机机型适配很是头疼,所以整理下网上资料,记录下来,也许能帮助到正看文章的你, 今天打算跟大家聊聊最近研究的全机型适配思路. 当前我们需要适配的iPhone机型有4s.5s.6s.6Plus四种机型.它们的尺寸分别是  iphone4s {320, 480}                           960*640  iphone5 5s {320, 568}                       1136*640  iphone6 6s   {37

IOS 开发自定义条形ProgressView的实例_IOS

IOS 自定义进度条 ProgressView,好的进度条,让人赏心悦目,在等待的时候不是那么烦躁,也算是增加用户体验吧! 进度条在iOS开发中很常见的,我在项目开发中也写过好多进度条,有好多种类的,条形,圆形等,今天给大家总结一种条形的开发进度条. 简单思路:  1.自定义进度条先继承UIView 建立一个CustomBarProgressView  2.在.H文件中外漏的方法<开始的方法><初始化的方法>  3.在.M文件中 利用定时器改变位置 实现进度条 #效果图 #部分代码

iOS开发之事件传递响应链_IOS

当我们在使用微信等工具,点击扫一扫,就能打开二维码扫描视图.在我们点击屏幕的时候,iphone OS获取到了用户进行了"单击"这一行为,操作系统把包含这些点击事件的信息包装成UITouch和UIEvent形式的实例,然后找到当前运行的程序,逐级寻找能够响应这个事件的对象,直到没有响应者响应.这一寻找的过程,被称作事件的响应链,如下图所示,不用的响应者以链式的方式寻找 事件响应链 一.响应者 在iOS中,能够响应事件的对象都是UIResponder的子类对象.UIResponder提供了

总结iOS开发中的断点续传与实践_IOS

前言 断点续传概述 断点续传就是从文件上次中断的地方开始重新下载或上传数据,而不是从文件开头.(本文的断点续传仅涉及下载,上传不在讨论之内)当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会去重头下载,这样很浪费时间.所以项目中要实现大文件下载,断点续传功能就必不可少了.当然,断点续传有一种特殊的情况,就是 iOS 应用被用户 kill 掉或者应用 crash,要实现应用重启之后的断点续传.这种特殊情况是本文要解决的问题. 断点续传原理 要实现断点续传 , 服

iOS开发之路--微博骨架搭建_IOS

最终效果图: BeyondViewController.m // // BeyondViewController.m // 20_帅哥no微博 // // Created by beyond on 14-8-3. // Copyright (c) 2014年 com.beyond. All rights reserved. // 这个就是主控制器,分为两块,下面是Dock栏,上面是显示不同的子控制器的view,子控制器最好用导航控制器包装一下,这样子控制器就自带了导航条,左按钮,标题,右按钮 /