ios ~ 高德舆图:使用方法及示例

源代码 2024-9-25 02:16:42 83 0 来自 中国
相关文档【高德舆图官方文档】:
1、iOS 舆图SDK
2、iOS 定位SDK
3、基础SDK先容
4、提交AppStore必读(用不消 广告符IDFA)
5、权限设置
6、绘制点标记(自带大头针样式,可自界说图标、标记)
7、绘制面:图片覆盖物(图片覆盖物类为 MAGroundOverlay)、绘制圆、绘制热力图、绘制overlay(自界说图层)
(覆盖图片类、多边形、贝塞尔曲线、标记)
8、示例:iOS 高德舆图点平滑移动-停息-再移动


  • 一、使用方法:
CocoaPods导入:
在Podfile文件中写入:
# 高德舆图:(功能:舆图(分2D、3D)、定位、搜刮)  #pod 'AMap3DMap'  #pod 'AMapSearch'    #pod 'AMapLocation' # 包罗IDFA版的定位 SDK  pod 'AMap3DMap-NO-IDFA'    # 无IDFA版  pod 'AMapLocation-NO-IDFA' # 无IDFA版定位 SDK  pod 'AMapSearch-NO-IDFA'   # 无IDFA版舆图导入头文件:

// 将上面步调获取的高德Key,设置到代码中,以包管舆图功能的正常运行。//须要引入AMapFoundationKit.h头文件()#import <AMapFoundationKit/AMapFoundationKit.h>// 加载3D矢量舆图,初始化:#import <MAMapKit/MAMapKit.h> // 实现连续定位:#import <AMapLocationKit/AMapLocationKit.h>[Objective-C]:

1.设置Info.plist 文件

由于须要申请定位权限,在 Info.plist 中参加 NSLocationAlwaysUsageDescription 字段。
2.设置高德Key至AppDelegate.m文件

将上面步调获取的高德Key,设置到代码中,以包管定位功能的正常运行。代码如下
#import <AMapFoundationKit/AMapFoundationKit.h>//须要引入AMapFoundationKit.h头文件.......- (BOOL)applicationUIApplication *)application didFinishLaunchingWithOptionsNSDictionary *)launchOptions{      [AMapServices sharedServices].apiKey = @"您的Key";    .......}3.加载舆图
在ViewController.m文件相应的方法中举行舆图初始化,初始化的步调:

  • import MAMapKit.h 头文件;
  • 构造MAMapView对象;
  • 将MAMapView添加到Subview中。
对于3D矢量舆图,在 viewDidLoad 方法中添加代码:
#import <MAMapKit/MAMapKit.h>-(void) viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.///初始化舆图MAMapView *_mapView = [[MAMapView alloc] initWithFrame:self.view.bounds];///把舆图添加至view    [self.view addSubview:_mapView];}4.实现连续定位

代码如下:
#import <AMapLocationKit/AMapLocationKit.h>//初始化AMapLocationManager对象,设置署理。- (void)viewDidLoad{    self.locationManager = [[AMapLocationManager alloc] init];    self.locationManager.delegate = self;}//调用AMapLocationManager提供的startUpdatingLocation方法开启连续定位。[self.locationManager startUpdatingLocation];//吸收位置更新,实现AMapLocationManagerDelegate署理的amapLocationManager:didUpdateLocation方法,处理惩罚位置更新- (void)amapLocationManagerAMapLocationManager *)manager didUpdateLocationCLLocation *)location reGeocodeAMapLocationReGeocode *)reGeocode{    NSLog(@"location:{lat:%f; lon:%f; accuracy:%f}", location.coordinate.latitude, location.coordinate.longitude, location.horizontalAccuracy);    if (regeocode)      {          NSLog(@"reGeocode:%@", regeocode);      }}


  • 一些问题及办理方法:
问题:

(1)、关于高德舆图自界说标注的气泡时,不能相应单击变乱吗?
办理办法:
// 在CustomAnnotationView.m中重写hittest方法:(这里的self.calloutView.navBtn 就是你须要点击的按钮)- (UIView *)hitTestCGPoint)point withEventUIEvent *)event {    UIView *view = [super hitTest:point withEvent:event];    if (view == nil) {        CGPoint tempoint = [self.calloutView.navBtn convertPoint:point fromView:self];        if (CGRectContainsPoint(self.calloutView.navBtn.bounds, tempoint)) {            view = self.calloutView.navBtn;        }    }    return view;}


  • 二、示例:
图片覆盖物:【气温】、【降水】
点平滑移动:【台风】
点标注+气泡标注:【自界说气泡标注】
图片覆盖物,使用NSTimer,时间轴(时间刻度)循环更改图片覆盖物,原理:删除,置为nil,在重新创建
if (self.groundOverlay != nil) {      [self.mapView removeOverlay:self.groundOverlay]; // 点击台风的时间,删掉覆盖物层,在须要的时间重新创建      self.groundOverlay = nil;}
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-24 08:36, Processed in 0.158874 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表