上篇《基于Android平台的全球地图方案》大概描述了不同地图之间的差异,以及在国内要显示国外的地址有哪些方案。本篇就说一下在Android开发中,如何在地图上显示国外的地址。
我们的方案还是使用高德地图。
上篇已经提到,高德地图支持瓦片显示,所以当我们显示国外地址时,只需要在高德地图上添加Google的瓦片即可,开发者也可以使用已经下载好的瓦片或者自定义的瓦片。这里笔者只写一个简单的例子,具体大家可以查看高德地图的API。
TileProvider tileProvider = new UrlTileProvider(256, 256) {
public URL getTileUrl(int x, int y, int zoom) {
try {
return new URL(String.format(http://mt2.google.cn/vt/lyrs=m@198&hl=zh-CN&gl=cn&src=app&x=%d&y=%d&z=%d&s=, x, y, zoom));
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
};
aMap.addTileOverlay(new TileOverlayOptions()
.tileProvider(tileProvider)
.diskCacheEnabled(true)
.diskCacheDir("/storage/emulated/0/demo/cache")
.diskCacheSize(100000)
.memoryCacheEnabled(true)
.memCacheSize(100000));
通过以上方法,就可以在高德地图的基础上添加Google瓦片,便可以显示国外的地图了,上篇中有添加瓦片前后的对比图。
那么除了这种方法之外,对于开发者其实还有更简单的方法,高德地图已经帮我们封装好了,只需要调用以下方法:
MapsInitializer.loadWorldGridMap(true);
仅此一句话便可以显示全球的地图信息了,当高德地图无法显示国外地址时会自动切换到Google显示,开发者无需干预。但是如果开发的需求仅限于国内的话,就不用添加这一句了,毕竟影响加载的效率和内存的占用。
网友评论