前段时间完成了一个小项目:实现一个带有运动轨迹的计步器,并且在第三方接口百度地图上显示具体的位置和运动信息。
接触一些新的事物,总会遇到各种各样的问题。把之记录下来,希望可以帮助到一些跟我一样遇到同样问题的朋友们。
问题一:为了学习如何使用百度地图,我先看了百度提供的demo。但是在运行BaiduMapsApiDemo的时候遇到了很多问题。
点击基本地图功能选项,不能打开地图,弹出“key验证出错!请在AndroidManifest.xml文件中检查key设置的”的红色字提示。
原因以及解决方法:我申请key的时候填写的包名与demo的包名不对应。查看Mainfest文件里的包名package="baidumapsdk.demo",之后重新设置包名就可以了。
问题二:在模拟器上运行,第一次打开的时候可以正常显示地图,后来只显示网格。
原因以及解决方法:在手机上运行就正常了。我觉得可能是在模拟器上加载得比较慢导致的。
问题三:第一次在xml文件里写代码的时候,xml文件报错“Attribute is missing the Android namespace prefix”
原因以及解决方法:我写代码习惯在冒号后加一个空格、在等号左右空一格。但是在xml文件这样写是错误的,必须是像这样没有空格地写android:layout_width="fill_parent"
问题四:......cannot be resolved to a type
解决方法:一般情况下都是因为没有import相关的包。点击那一行错误提示左边的红色叉,就有import相关的包这个选项可以选。
问题五:关于fill_parent、match_parent、wrap_parent的含义
解决方法:查看资料
fill_parent:The view should be as big as its parent (minus padding). This constant is deprecated starting from API Level 8 and is replaced by match_parent.
match_parent:The view should be as big as its parent (minus padding). Introduced in API Level 8.
wrap_content:The view should be only big enough to enclose its content (plus padding).
问题六:我想要实现页面的跳转,结果点击触发跳转的按钮时总是显示app已停止运行。
原因以及解决方法:(我忽略了一个很重要的步骤)我新写的Activity类没有添加到Mainfest文件的声明里。
问题七:我把实现定位相关的写好之后,跳转到定位的页面时总是显示北京的地图,并没进行定位。
原因以及解决方法:原因是没有在Mainfest中声明服务。把这个添加到Mainfest中就可以正常定位了。
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
</service>
问题八:隔两天再使用,结果sha1值变了,导致地图显示只能看到网格。
解决方法:要到api控制台重新设置sha1值。
心得:不要以为一切都不变,固执地下去不愿相信你眼前的事物时刻变化会很惨很惨的!(虽然我真的不能理解为什么就变了)
问题九:有时候把我定位到非洲去了。
原因以及解决方法:一开始使用wifi进行定位,然后wifi转到用移动数据就会立刻定位到非洲,然后立刻又定位回来。移动数据没有打开,导致切换的时候有问题。所以每次要打开移动数据再运行app。
问题十:关于百度坐标的偏移
原因:百度地图SDK采用的是百度自有的地理坐标系(bdll09),因此开发者在做位置标注的时候,需要将其他类型的坐标转换为百度坐标。简单地说,就是在百度地图上显示要使用百度坐标才会准确。
解决方法:使用百度地图提供的坐标转换接口
// 将GPS设备采集的原始GPS坐标转换成百度坐标
CoordinateConverter converter = new CoordinateConverter();
converter.from(CoordType.GPS);
// sourceLatLng待转换坐标
converter.coord(sourceLatLng);
LatLng desLatLng = converter.convert();
问题十一:option.setScanSpan(700);//设置发起定位请求的间隔时间为700ms
当我设置发起定位请求的间隔时间为700ms时,只能进行一次定位,走动时候就停止定位了。
原因以及解决方法:我猜想可能是间隔时间小于1000ms的时候会定位失效。
问题十二:考虑到用户没有打开GPS而导致软件崩溃的情况。
解决方法:加入警告框进行提示。跳转到用户的GPS设置界面。
问题十三:界面风格的一致性。
解决方法:主要采用这三种颜色进行设计#CCCCCC、#FFFFFF、#666699