Code

2011年5月14日星期六

iCreate: Progress 2

原来平时所说的手机上GPS定位是一种误导。
手机上的定位除了GPS还可以用wifi热点和信号塔来定位。一般在室内的时候GPS很难接收到卫星信号,所以必须通过wifi热点,或者信号塔来定位来判断地点。GPS虽然比较精确(可以在20米以内)但它耗电大,定位慢。用wifi热点定位就需要周围有热点,这些热点的位置信息有的被记录在apple 或者google的server上(最近有关apple秘密发送用户存储在自己iphone里的地理信息就是这个目的)。如果有开3G,不需要连接到wifi,只需要打开wifi就可以定位。但如果没有3G就必须连wifi上网了。当然开了wifi和3G也是相当耗电的。如果在公路上面开车,就没有wifi热点,就只能用信号塔来定位了。信号塔的精确度很低,一般在几公里内,但是对于手机来说,只要在服务区内,就会有信号。
Android可以根据不同的标准如速度,精确度,流量,方向数据等自动选择不同的信号源。所以,在手机上定位还是一件比较复杂的事情。
另外,这两天把drag map的功能移植到了我们的NUS Path Finder。那个功能是索爱开发网站上找到的,有一连四个tutorial。不过现在他们好像把那个tutorial封了,估计是不想让别人抄他们的技术。幸好我下手早。然后,现在在实现一个overlay的功能,到时候我们需要把路线在地图上显示出来,所以这个功能很重要。
现在的想法就是在显示map view上面直接画drawables,不过问题是drawables的位置很难定。特别是drag地图还有dynamic效果。
今天晚上弄了一下,用了个很简单的办法。创建一个跟map一样大小的bitmap,先把map画上去,然后再画overlay的东西。最后把这个bitmap画出来就行了。在画overlay之前可以做一些transformation。严格来讲这并不算是overlay, 只是把好几个东西一层一层的话在一张图上,虽然很方便,但不够flexible,不能很好的控制多个overlay。
我觉得overlay在google map里的复杂的实现方法是因为google map很complex,需要经常性的更换图层,而且map并不只有一个tile,很多tile要dynamically load,用我这种方法很不方便。

没有评论: