我们在APP中开发中经常会内嵌地图展示某一具体位置,比如用地图展示某一个具体位置。以上海徐家汇为例,如下图所示:
如果我们直接使用浏览器打开的话,参考http://developer.baidu.com/map/uri-introweb.htm
如果我们已知经纬度(lat, lng),那么很方便,我们可以使用下面的方式来展示
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
Uri content_url = Uri
.parse("http://api.map.baidu.com/ marker?location=31.200209,121.443481&output=html");
intent.setData(content_url);
startActivity(intent);
结果也能正确显示。但是更多时候我们无法知道确切经纬度,只有具体地名,那么我们又该如何处理呢? 百度WEB API都帮我们想到了这些问题,我们可以先使用http://api.map.baidu.com/geocoder?address=上海徐家汇&output=json方法来获取经纬度,进而使用上面的方式展示即可。注意我们使用的是json,如果使用Html展示,那么下面内容为:
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
Uri content_url = Uri
.parse("http://api.map.baidu.com/geocoder?address=上海徐家汇&output=html");
intent.setData(content_url);
startActivity(intent);
显示结果为:
如果需要得到上面实际地图结果,需要点击椭圆形中的地图图标才会进入地图模式,得到:
这样就很麻烦,需要用户点击一次才可以得到想要的内容。
故我们的方式为先用异步处理获得经纬度,然后填充到上面的API展示相关内容即可。具体实现代码如下: