1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android 百度地图大头针 百度地图API 地理位置获取和大头针显示当前位置

android 百度地图大头针 百度地图API 地理位置获取和大头针显示当前位置

时间:2023-09-12 10:08:14

相关推荐

android 百度地图大头针 百度地图API 地理位置获取和大头针显示当前位置

1.导入系统库添加方式:在Xcode的Project -> Active Target ->Build Phases ->Link Binary With Libraries,添加这几个系统库即可。

CoreLocation.framework、

QuartzCore.framework、

OpenGLES.framework、

SystemConfiguration.framework、

CoreGraphics.framework、

Security.framework、

libsqlite3.0.tbd(xcode7以前为 libsqlite3.0.dylib)、

CoreTelephony.framework 、

libstdc++.6.0.9.tbd(xcode7以前为libstdc++.6.0.9.dylib)。

导入百度框架

BaiduMapAPI_Base.framework

BaiduMapAPI_Location.framework

BaiduMapAPI_Map.framework

第四步、引入mapapi.bundle资源文件

如果使用了基础地图功能,需要添加该资源,否则地图不能正常显示mapapi.bundle中存储了定位、默认大头针标注View及路线关键点的资源图片,还存储了矢量地图绘制必需的资源文件。如果您不需要使用内置的图片显示功能,则可以删除bundle文件中的image文件夹。您也可以根据具体需求任意替换或删除该bundle中image文件夹的图片文件。

方法:选中工程名,在右键菜单中选择Add Files to “工程名”…,从BaiduMapAPI_Map.framework||Resources文件中选择mapapi.bundle文件,并勾选“Copy items if needed”复选框,单击“Add”按钮,将资源文件添加到工程中。

2.在TARGETS->Build Settings->Other Linker Flags 中添加-Objc。

3.百度地图框架拖进工程里面

3.静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即在Xcode的Project -> Edit Active Target -> Build Setting 中找到 Compile Sources As,并将其设置为"Objective-C++"

4.Info.plist文件里添加

Bundle display name 项目名

NSLocationAlwaysUsageDescription 空

NSLocationWhenInUseUsageDescription 空

代码:

1.

#import

#import//引入base相关所有的头文件

#import//引入地图功能所有的头文件

@interfaceAppDelegate : UIResponder

{

// UIWindow *window;

UINavigationController*navigationController;

BMKMapManager* _mapManager;

}

@property(strong,nonatomic)UIWindow*window;

@end

2.

- (BOOL)application:(UIApplication*)application

didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {//要使用百度地图,请先启动BaiduMapManager

_mapManager= [[BMKMapManageralloc]init];

//如果要关注网络及授权验证事件,请设定generalDelegate参数

BOOLret = [_mapManagerstart:@"SYEQevXO4Mt538X6O8iCLSEyPdEi5OrV"generalDelegate:nil];

if(!ret) {

NSLog(@"manager start failed!");

}

// Add the navigation controller's view to the window and display.

[self.windowaddSubview:navigationController.view];

[self.windowmakeKeyAndVisible];

returnYES;

}

3.

#import

#import//引入base相关所有的头文件

#import//引入地图功能所有的头文件

#import

//#import

//#import

@interfaceViewController :UIViewController

{

BMKMapManager*_mapManager;//声明一个地图管理

BMKMapView*_mapView;//声明一张地图

BMKPointAnnotation*_annotation;//声明一个标注

BMKLocationService*_locService;

}

@end

4.

- (void)viewDidLoad {

[superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

_mapView= [[BMKMapViewalloc]initWithFrame:CGRectMake(0,0, [UIScreenmainScreen].bounds.size.width, [UIScreenmainScreen].bounds.size.height)];

self.view=_mapView;

//初始化BMKLocationService

_locService= [[BMKLocationServicealloc]init];

_locService.delegate=self;

//启动LocationService

[_locServicestartUserLocationService];

//在地图中添加一个PointAnnotation

_annotation= [[BMKPointAnnotationalloc]init];

_annotation.title=@"test";

_annotation.subtitle=@"this is a test!";

[_mapViewaddAnnotation:_annotation];//个人猜测,当执行此句代码时,将会调用- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id )annotation方法

}

-(void)viewWillAppear:(BOOL)animated

{

[_mapViewviewWillAppear];

_mapView.delegate=self;// 此处记得不用的时候需要置nil,否则影响内存的释放

}

-(void)viewWillDisappear:(BOOL)animated

{

[_mapViewviewWillDisappear];

_mapView.delegate=nil;// 不用时,置nil

}

//实现相关delegate处理位置信息更新

//处理方向变更信息

- (void)didUpdateUserHeading:(BMKUserLocation*)userLocation

{

NSLog(@"heading is %@",userLocation.heading);

if(userLocation !=nil) {

NSLog(@"%f %f", userLocation.location.coordinate.latitude, userLocation.location.coordinate.longitude);

// //将地图移动到当前位置

// float zoomLevel = 0.02;

// BMKCoordinateRegion region = BMKCoordinateRegionMake(userLocation.location.coordinate,BMKCoordinateSpanMake(zoomLevel, zoomLevel));

// [_mapView setRegion:[_mapView regionThatFits:region] animated:YES];

//大头针摆放的坐标,必须从这里进行赋值,否则取不到值,这里可能涉及到委托方法执行顺序的问题

CLLocationCoordinate2Dcoor;

coor.latitude= userLocation.location.coordinate.latitude;

coor.longitude= userLocation.location.coordinate.longitude;

_annotation.coordinate= coor;

}

}

处理位置坐标更新

//- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation

//{

// NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);

//}

- (BMKAnnotationView*)mapView:(BMKMapView*)mapView viewForAnnotation:(id)annotation

{

if([annotationisKindOfClass:[BMKPointAnnotationclass]]) {

BMKPinAnnotationView*newAnnotation = [[BMKPinAnnotationViewalloc]initWithAnnotation:annotationreuseIdentifier:@"myAnnotation"];//初始化一个大头针标注

newAnnotation.pinColor=BMKPinAnnotationColorPurple;

newAnnotation.animatesDrop=YES;

newAnnotation.draggable=YES;

returnnewAnnotation;

}

returnnil;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。