iOS第三方地图-百度地图定位的封装

//
//  BaiduMapTools.h
//  baidumapTest
//
//  Created by apple on 15/8/26.
//  Copyright (c) 2015年 tqh. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface WJBaiduMapTools : NSObject
/**单例*/
+(WJBaiduMapTools *)instance;

/**定位,能得到省市街道*/
- (void)startlocation:(BOOL)needaddress
      locationSuccess:(void(^)(double longitude,double latitude)) locationSuccess
       addressSuccess:(void(^)(double longitude,double latitude,BMKAddressComponent *address))addressSuccess;

/**停止定位*/
- (void)stoplocation;
@end
//
//  BaiduMapTools.m
//  baidumapTest
//
//  Created by apple on 15/8/26.
//  Copyright (c) 2015年 tqh. All rights reserved.
//

#import "WJBaiduMapTools.h"
//注:需要导入百度地图api

@interface WJBaiduMapTools ()<BMKLocationServiceDelegate,BMKGeoCodeSearchDelegate> {
    BMKLocationService *_locService; //定位
    BMKGeoCodeSearch *_searcher;     //geo搜索服务
    BOOL _needaddress;               //是否定位
    //得到经纬度
    void (^ _locationSuccess)(double longitude,double latitude);
    //得到经纬度和地理位置信息
    void (^ _addressSuccess)(double longitude,double latitude,BMKAddressComponent *address);
}

@end

@implementation WJBaiduMapTools

+(WJBaiduMapTools *)instance {
    static WJBaiduMapTools *location;
    @synchronized(self) {
        if(!location) {
            location = [[WJBaiduMapTools alloc] init];

        }
    }
    return location;
}

- (instancetype)init
{
    self = [super init];
    if (self) {
        _needaddress=NO;
        [BMKLocationService setLocationDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
        [BMKLocationService setLocationDistanceFilter:100.f];
        _locService = [[BMKLocationService alloc]init];
        _locService.delegate = self;
        _searcher =[[BMKGeoCodeSearch alloc]init];
        _searcher.delegate = self;
    }
    return self;
}

//开始定位
-(void)startlocation:(BOOL)needaddress locationSuccess:(void (^)(double, double))locationSuccess addressSuccess:(void (^)(double, double, BMKAddressComponent *))addressSuccess{
    _needaddress=needaddress;
    _locationSuccess=locationSuccess;
    _addressSuccess=addressSuccess;
    if (_locService!=nil) {
        [_locService startUserLocationService];
    }
}

//停止定位
- (void)stoplocation {
    if (_locService!=nil) {
        [_locService stopUserLocationService];
    }
}

// 定位成功
-(void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation{
    [_locService stopUserLocationService];
    double longitude=userLocation.location.coordinate.longitude;
    double latitude=userLocation.location.coordinate.latitude;
    if (_locationSuccess) {
        _locationSuccess(longitude,latitude);
    }
    if (_needaddress) {
        //发起反向地理编码检索
        BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
        reverseGeocodeSearchOption.reverseGeoPoint = (CLLocationCoordinate2D){latitude,longitude};
        BOOL flag = [_searcher reverseGeoCode:reverseGeocodeSearchOption];
        if(flag)
        {
            NSLog(@"反geo检索发送成功");
        }
        else
        {
            NSLog(@"反geo检索发送失败");
        }
    }else{

    }
}

-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error{
    if (error == BMK_SEARCH_NO_ERROR) {
        if (_addressSuccess) {
            _addressSuccess(result.location.longitude,result.location.latitude,result.addressDetail);
        }
    }
}
@end
时间: 2024-08-06 16:02:24

iOS第三方地图-百度地图定位的封装的相关文章

iOS第三方之百度地图环境搭建一

一.先按照官方注意事项修改Xcode环境 静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将Xcode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As设置为"Objective-C++" 如果您只在Xib文件中使用了BMKMapVi

IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息

IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息 /**当获取到定位的坐标后,回调函数*/ - (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation{ BMKCoordinateRegion region; region.center.latitude  = userLocation.location.coordinate.latitude; region.center.longitude = userLoca

iOS开发之 - 百度地图合成包(真机 , 模拟器通用)

百度地图一个是真机包,一个是模拟器包.下面是把真机包和模拟器包 合成为一个.以便开发 所有的包合成方法均是一样. 打开终端: lipo -create /Users/quancheng/Library/Developer/Xcode/DerivedData/LIBRARY-apqimrbblggwrncbmevvddjbhmcy/Build/Products/Release-iphonesimulator/libLIBRARY.a /Users/quancheng/Library/Develop

通过百度地图API定位--第三方开源--百度地图(一)

1.把百度地图定位API(下载地址:http://lbsyun.baidu.com/sdk/download?selected=location)里面的libs复制到自己的项目libs里面 2.进行相关的配置,具体见官方文档:http://developer.baidu.com/map/index.php?title=android-locsdk/guide/v5-0 3.代码: 1 package com.zzw.baidumap; 2 3 import com.baidu.location.

ios 苹果和百度地图的相关使用

iOS中使用较多的3款地图,google地图.百度地图.苹果自带地图(高德).其中苹果自带地图在中国使用的是高德的数据.苹果在iOS 6之后放弃了使用谷歌地图,而改用自家的地图.在国内使用的较多的就是百度.苹果自带地图(高德),以下总结下这两个. 一.苹果地图的使用 因为苹果使用的是高德的地图,加上苹果做的一些封装,使用起来也非常方便.不需要引入第三方框架,相比较之下,使用百度地图SDK会使源码与程序都 大10M多,这点很蛋疼.同时由于苹果使用的是高德,不会像谷歌地图一样在国内乌龟一样的访问速度

IOS开发之百度地图API应用

目前我们在做IOS开发中绝大多数用的是GoogleMap地图,IOS本身自带的也是googleMap,但是如果我们希望在地图上实时显示路况信息等部分功能,googlemap则没有,所以有时候我们可以应用百度地图做应用程序.下面我简单介绍一下BMapKit的应用: 一:首先我们有一点与用googlemap开发的不同,需要创建BMKMapManager管理应用程序的map,如果没有这个类,地图则不能够显示. 下面红色的字体是自己在百度官方申请的地图api——key: BMKMapManager  *

第三方服务——百度地图API哪个好用?

之前我们能用的地图软件还寥寥无几,而且一个地图包动辄就上百M,还不支持GPS,没有实时路况,没有卫星图,一年也未必更新一次.现如今的地图功能已经极大丰富了,开发者的项目选择性也很大,地图哪个受众比较多比较好用呢?开发者不做“Outman”让你的项目与时俱进!Dev带你来了解一下. 百度地图API 百度地图API是一套为开发者免费提供的基于百度地图的应用程序接口,提供基本地图.位置搜索.周边搜索.公交驾车导航.定位服务.地理编码及逆地理编码等丰富功能.通过地图API,一方面解决移动开发者服务器端日

通过百度地图API显示当前位置在地图上(图标显示)--第三方开源--百度地图(二)

1.下载百度地图的demo,下载地址:http://lbsyun.baidu.com/sdk/download?selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool,mapsdk_radar 2.把demo里面的BaiduMapsApiDemo解压,把BaiduMapsApiDemo文件夹里面的libs里面的所有文件都复制到自己的项目的libs里面 3.配置Andro

iOS开发之百度地图导航

本篇主要讲述百度地图的导航功能: 第一步:在使用百度导航之前,我们需要在百度地图开放平台上下载导航的 SDK,共85.8M,网速不好的同学可提前准备好. 第二步:引入导航所需的系统包 将AudioToolbox.framework.ImageIO.framework.CoreMotion.framework.CoreLocation.framework.CoreTelephony.framework.MediaPlayer.framework.AVFoundation.framework.Sys

通过百度地图API实现搜索地址--第三方开源--百度地图(三)

搜索地址功能是建立在能够通过百度地图API获取位置的基础上 通过百度地图定位获取位置详情:http://www.cnblogs.com/zzw1994/p/5008134.html 1 package com.zzw.baidumappoint; 2 3 import com.baidu.location.BDLocation; 4 import com.baidu.location.BDLocationListener; 5 import com.baidu.location.Location