11.3.2 其他使用地图服务的方式
由于Google地图库是Android系统的可选模块,因此在很多Android设备上(尤其是在国内发售的很多设备上),都无法安装或使用基于Google地图库的应用。
为了使应用可以安装到更多的设备上,开发者需要权衡对地图库的使用,如果地图展示在应用中只是一个可选部分,可以采取利用Intent对象调用其他地图界面组件的方式来呈现位置信息,比如[1]:
//用地图界面组件来查看具体位置的信息
Intent viewMapAtLocation=new Intent(Intent.ACTION_VIEW);
viewMapAtLocation.setData(Uri.parse(
"geo:39.979,116.338?z=23"));
startActivity(viewMapAtLocation);
//用地图来搜索符合某些描述的位置信息
Intent viewMapByQuery=new Intent(Intent.ACTION_VIEW);
viewMapByQuery.setData(Uri.parse("geo:0,0?q=北京天安门"));
startActivity(viewMapByQuery);
或者,通过浏览器使用在线地图服务进行展示:
//用地图来搜索符合某些描述的位置信息
Intent viewMapOnline=new Intent(Intent.ACTION_VIEW);
viewMapOnline.setData(Uri.parse("
http://ditu.google.cn/maps?hl=zh&mrt=loc&q=39.979,116.338(北京天安门)"));
startActivity(viewMapOnline);
此外,一些第三方地图库也是不错的选择,比如:百度地图[2]、图吧[3]、MapABC[4]等。与使用Android自带的地图库相比,第三方的地图库可以自行打包到应用中,不需要关心设备上是否默认支持Google地图扩展,这对于以地图为核心的应用而言非常重要。大部分第三方地图库的API设计都是完全遵循Android原生地图库的API,开发时,仅需要替换到原有包名即可,几乎不需要修改其他代码,大大简化了开发的复杂度。
[1]关于地图请求Uri的规范,可以参见:http://tools.ietf.org/html/draft-mayrhofer-geo-uri-00。
[2]百度地图的相关API,参见:http://dev.baidu.com/wiki/imap/index.php。
[3]图吧的相关API,参见:http://open.mapbar.com/。
[4]MapABC的相关API,参加:http://code.mapabc.com/index.shtml。