百度——地图API——IOS v2.0.2—入门篇
建议高手飘过~~~~~~
本以为一个地图的helloworld很简单。实际使用却不是那么回事。就想把地图的头文件和静态库添加到文件中。应该就能用了。
baidu提供的xcode工程是支持ios4.3的。所以有挺多地方不同的。我的工程默认是6.1。可能也让我困惑了。
遇到三个问题:
1.添加的静态库不能编译通过。
2.号称离线地图。根本导入不进去。
3.按照上述配置,test工程启动之后还是网格
第一个问题:我们先来看看官方说明。
http://developer.baidu.com/map/sdkiosdev-2.htm
文中说明了三种方式。
引入静态库文件
百度MapAPI提供了模拟器和真机两中环境所使用的静态库文件,分别存放在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++"
看看我们都干了什么?
这个目录BaiduMap_iOSSDK_v2.0.2_Lib下,有两个文件夹和一个bundle。对于我这等菜鸟开发者。当然是一股脑的都拷贝到工程目录下。或者一起拖动到xcode的工程目录下。
第一个和第二个方法都看似很简单。我选择第二种方式,删除了其他两个静态库。添加了合成的通用静态库。
添加上代码之后,出现:
根据你写的代码,出的错误也多。最少有个
BMKMapManager。
反过头来看看工程中的Frameworks选项。其实已经仅剩下一个a文件了。为什么啊?找了个公司的高手看了20分钟也没弄明白。回家多次尝试找到了解决方法。
解决方案:
因为xcode工程删除静态库的时候,删除的是引用,文件还在那里。而且工程又没那么智能。不能识别同名静态库版本。所以不能准确定位到合适的静态库版本。删除其他的静态库。仅留下通用的静态库文件在libs目录下就能够解决了。
第二个问题:启动起来,打开地图,一片网格。下载总是提示0 。也不知道在ios上开发这么费劲。打算下载离线地图文件,直接拷贝到文件夹。问题接踵而至。
1.下载离线地图,http://shouji.baidu.com/map/map.html?from=3052
2.找模拟器程序所在目录。我的工程是5.1的。GUI界面无法找到这个目录。需要命令行,原因未知。
cd ~/Library/Application Support/iPhone Simulator/5.1/Applications
剩下就是进入每个GUID看到底是不是iphonemapsdkdemo。如果是的话。进入这个应用的Documents。
3.把下载下来的地图文件拷贝到上面进入的目录即可,不要解压zip文件,直接扔到目录即可。官方说明:http://hi.baidu.com/baidumap/item/8961a0152fd2e1a5ffded525?1225
4.进入模拟器,启动百度demo,进入离线地图,导入提示找到一个地图导入0。以为百度不会这么弱智,地图已经在那里,怎么会不能用。重启一下试试,看看奇迹会不会出现?(什么,还是一片网格?别灰心,我和你是一样的。)
5.为什么导入失败呢?回头又看了一便过程。也许我们开始就下载错了。百度提供的demo,离线地图,北京16.1M。但是网上没有这个大小的地图。iphone3和3GS用的是
- 北京市(17.5M)。而iphone4以上,都是北京市(16.5M)。很自然的,我们都会选择16.5M的。我自己只能误打误撞了。下载了个17.5M的版本再试。
解决方案:
模拟器中,需要下载iphone3的地图包,也就是lv低分辨率版本。这次再导入,就能看到导入的地图了。如果以前下载过一直是0。最好把模拟器中应用目录全删了。重新构建项目。
第三个问题:经过不断奋斗,启动依然是网格线。为什么啊?
这个问题比较复杂。百度为了限制用户登陆。第一次使用百度离线地图。需要在线验证mananger里的key和你的工程名。
解决方案:
参考百度,配置key的方式。配置完成之后。你应该就能看到期待已久的离线地图了。
百度——地图API——IOS v2.0.2—入门篇的更多相关文章
- 百度离线地图API开发V2.0版本
全面介绍,请看下列介绍地址,改写目前最新版本的百度V2.0地图,已全面实现离线操作,能到达在线功能的95%以上 http://api.jjszd.com:8081/apituiguang/gistg. ...
- android 3.0+百度地图api地图如何移动到指定的经纬度处
由于百度地图api,2.0+和3.0+的改动比较大,api基本上被全换过了,有些同学可能2.0+的api使用的非常熟悉,但是更新到3.0+时,却会遇到一些小麻烦(由于api变了,你就需要重新学习它的a ...
- ios 百度地图api 入门
百度地图api 官方教程: http://developer.baidu.com/map/index.php?title=iossdk 这个非常好, 很适合新手 CLLocationCoordinat ...
- 基于百度地图api + AngularJS 的入门地图
转载请注明地址:http://www.cnblogs.com/enzozo/p/4368081.html 简介: 此入门地图为简易的“广州大学城”公交寻路地图,采用很少量的AngularJS进行inp ...
- 百度地图API新手入门
最近,共享单车着实火了一把,市场竞争也是异常的激烈,百花争艳,百家争鸣,群雄逐鹿,最后鹿死谁手,现在还不得而知,不过可以肯定的是细节决定成败,更重要的还在于用户的体验. 用过的同学们都会知道,打开共享 ...
- ExtJs 4.0 DeskTop集成 百度地图API
经过3天的奋斗最终搞了出来, 网上的资料非常少,希望小⑦的文章对读者有点帮助,PS:小⑦非常努力的~. 不废话,上代码了. 首先.去百度官网Copy一个模版 http://api.map.baidu. ...
- [ActionScript 3.0] AS3调用百度地图API
package { import baidu.map.basetype.LngLat; import baidu.map.basetype.Size; import baidu.map.config. ...
- Winform实现用多线程、百度地图API解析某公司的物理地址
前言 作为一个很挫的C#新手总喜欢自己写点儿不着边际的东西,本人是个新手加菜鸟,写B/S的,工作中,任务完成了,空闲下来,总想继续学点儿什么,由此触发了本篇文章了.个人一直认为,.NET中,C/S所要 ...
- C#调用百度地图API经验分享(一)
最近客户提了一个需求,要在网站中添加百度地图的显示,其实原来是有谷歌地图的,但由于谷歌在大陆遭到封杀,只好再给用户增加一个选择了. 下面我将自己最近整理的一些知识分享给大家. 如何使用百度地图API: ...
随机推荐
- 数组有没有 length()这个方法? String 有没有 length()这 个方法?
1.数组中有length属性. 2.String有lenth()方法.
- ArrayList-VS-LinkedList
ArrayList 是List接口的实现类:底层的数据结构是数组,而LinkedList底层数据结构是双向循环链表. 所以在查询时ArrayList效率高,增删时LinkedList高.由于List中 ...
- 怎样用Excel自动排成绩
经常需要做表格,排成绩名次总是笨笨的一个一个填,费时又费力,终于找到了解决的办法%>_<%(不要嘲笑我了(✿◡‿◡)),原来就是一个名叫RANK的函数,还在苦逼地自己输的小伙伴们,快来看吧 ...
- Mysql 库、表、字段 字符集
show character set;show create database aloe;show create table book_category;show full columns from ...
- jquery获取多个checkbox的值异步提交给php
html代码: <tr> <td><input type="checkbox" name="uid" value="&l ...
- 为Chrome添加https搜索 自定义地址栏搜索引擎
转载 http://www.appinn.com/chrome-search-https-google/ 还可以参考一下 ://www.cnblogs.com/iftreasure/archive/2 ...
- 射频识别技术漫谈(16)——Mifare UltraLight
Mifare UltraLight又称为MF0,从UltraLight(超轻的)这个名字就可以看出来,它是一个低成本.小容量的卡片.低成本,是指它是目前市场中价格最低的遵守ISO14443A协议的芯片 ...
- 没有开发者账号,如何解锁wp8设备
原文 http://www.cnblogs.com/vsdot/p/3263454.html 问题的引入 好了,问题的由来是这样的,我想把我开发的wp8手机部署到手机上,可是竟然出现了下面的问题: [ ...
- Nginx CORS实现JS跨域
1. 什么是跨域 简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象. 同源是指相同的协议.域名.端口.特别注意两点: 如果 ...
- 「C」 数组、字符串、指针
一.数组 (一)数组 概念:用来存储一组数据的构造数据类型 特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素. (二)数组的定义 格式: 类型 数组名[元素个数 ...