最近需求要原有项目里面添加地图功能
谷歌地图直接pass, 墙太狠了
英语可以的用高德地图没问题,api和代码注释都可以看懂
对我这种英语烂的,还是百度地图是福音,
百度地图api和字里行间的代码注释都是中文,而且还很相信,赞一个
开发百度地图需要百度账号,没有就搞一个吧,一号多用,以后还可以搞搞百度云之类的
登陆http://developer.baidu.com/map/ ,找到API控制台
创建应用申请 百度地图key,注意安全码是app的bundle id
下载百度地图sdk,最好带demo 一块下了,方便以后扩展的时候参考
新建环境吧,搞了一个下午才搞定
因为iPhone 真机和模拟器的核心处理器不一样,真机是arm 而模拟器用的是mac的处理器 是inter的 所以百度静态包的添加不一样,在http://developer.baidu.com/map/index.php?title=iossdk/guide/hellobaidumap
上有说明:
引入静态库文件
百度地图SDK提供了模拟器和真机两中环境所使用的静态库文件,分别存放在libs/Release-iphonesimulator和libs/Release-iphoneos文件夹下。有三种方式可以引入静态库文件:
第一种方式:直接将对应平台的.a文件拖拽至Xcode工程左侧的Groups&Files中,缺点是每次在真机和模拟器编译时都需要重新添加.a文件;
第二种方式:使用lipo命令将设备和模拟器的.a合并成一个通用的.a文件,将合并后的通用.a文件拖拽至工程中即可,具体命令如下: lipo -create Release-iphoneos/libbaidumapapi.a Release-iphonesimulator/libbaidumapapi.a -output libbaidumapapi.a
第三种方式:
1. 将API的libs文件夹拷贝到您的Application工程根目录下
2. 在Xcode的Project -> Edit Active Target -> Build -> Linking -> Other Linker Flags中添加-ObjC
3. 设置静态库的链接路径,在Xcode的Project -> Edit Active Target -> Build -> Search Path -> Library Search Paths中添加您的静态库目录,比如"$(SRCROOT)/../libs/Release$(EFFECTIVE_PLATFORM_NAME)",$(SRCROOT)宏代表您的工程文件目录,$(EFFECTIVE_PLATFORM_NAME)宏代表当前配置是OS还是simulator
注:静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将Xcode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As设置为"Objective-C++"
第一种方式没用过
第二种方式没成功过
我用的是第三种方式,1)、2)两步毫无压力, 第三步配置静态目录,$(SRCROOT)/../libs/Release$(EFFECTIVE_PLATFORM_NAME),把路径copy全了,若lib文件夹放到根目录则可以删除省略号,若没有则需要填入相应的文件夹, 我在此处滑倒,费事1个小时
静态库用的是Object C++实现的, 所以需要工程中至少有一个.mm后缀的文件, 当时头昏,没看到《《或者》》二字,所以顺手把Compile Sources As 也设置了
由于原项目里面有开源包,添加了SDWebImage 所以设置Compile Sources As后编译不通过,在此处费时俩小时
解决方法,忽略或者后边的文字
磕磕绊绊编译通过,也没问题了,终于可以显示到手机(模拟器)上了,发现 manager start failed! 把官方demo比较,上网查资料,费时1个小时,发现info.plist 需要添加一项Bundle display name,名字和文件中的Bundle name名字一样即可
如此这般终于
TestMail[918:607] 联网成功
TestMail[918:607] 授权成功
百度sdk添加成功