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

2025-05-29 0 66

一,效果图。

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

二,工程图。

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

三,代码。

viewcontroller.h

?

1

2

3

4

5

6

7

8

9

10
#import <uikit/uikit.h>

#import <corelocation/corelocation.h>

#import "maplocation.h"

@interface viewcontroller : uiviewcontroller

<mkmapviewdelegate>

{

mkmapview *_mapview;

nsstring *addressstring;

}

@end

viewcontroller.m

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64
#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

?

1

2

3

4

5

6

7

8

9

10

11

12

13
#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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23
//地图调用函数

#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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 iOS开发之离线地图核心代码 https://www.kuaiidc.com/92825.html

相关文章

发表评论
暂无评论