700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android谷歌卫星地图 高德地图安卓端实现卫星地图路网功能

android谷歌卫星地图 高德地图安卓端实现卫星地图路网功能

时间:2018-06-16 23:57:35

相关推荐

android谷歌卫星地图 高德地图安卓端实现卫星地图路网功能

项目需求场景——

绘制地块时需要显示卫星地图,还要显示路网信息

遇到的问题——

目前高德地图只提供两种地图类型:

AMap.MAP_TYPE_NORMAL 普通地图

AMap.MAP_TYPE_SATELLITE 卫星地图

前者提供了丰富的路网信息和建筑地标等信息,但是无法满足我们的卫星地图需求。

普通地图——包含路网和建筑地标等信息

后者除了卫星地图之外不提供任何额外信息

卫星地图——毛都没有

解决方案——

我尝试使用路况图层来显示路网信息,但是效果很差,而且并没有地标和其他标记信息

路况图层——呃。。。并没有什么卵用

后来找到了解决问题的终极方案,这还要感激我们的另外一个需求。

我们的项目需求中有一个是从用谷歌地图的图层进行遮罩,以解决部分区域地图无法显示的问题(此区域无图片信息),因为谷歌地图的覆盖区域和图片信息量是远远超过高德地图的。

我们采用的方式是添加RemoteOverlay瓦片图层的方式实现。具体代码为:

void addRemoteOverlay() {

final String url = "/maps/vt?lyrs=y@194&hl=zh-CN&gl=cn&x=%d&y=%d&z=%d";

TileOverlayOptions tileOverlayOptions = new TileOverlayOptions().tileProvider(new UrlTileProvider(256, 256) {

@Override

public URL getTileUrl(int x, int y, int zoom) {

try {

return new URL(String.format(url, x, y, zoom));

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

});

tileOverlayOptions.diskCacheEnabled(true)

.diskCacheDir("/storage/emulated/0/amap/OMCcache")

.diskCacheSize(100000)

.memoryCacheEnabled(true)

.memCacheSize(100000)

.zIndex(-9999);

googleTileOverlay = aMap.addTileOverlay(tileOverlayOptions);

}

final String url = "/maps/vt?lyrs=y@194&hl=zh-CN&gl=cn&x=%d&y=%d&z=%d";为瓦片图片模板格式,其中参数lyrs有三种类型:lyrs=y为混合地图,s为卫星地图,m为普通地图。我们使用谷歌地图的瓦片图层的时候默认采用的是lyrs=s,也就是普通的卫星图层,现在我们希望包含路网信息,只需要设置lyrs=y就OK了。

完美实现!

带有路网、地标信息的谷歌卫星地图——这才是我们想要的

以上。

文中提到的绘制地块、图层遮罩、瓦片图层等技术不在此篇讨论范围,如有兴趣请私信或者留言咨询。以后有机会我也会逐渐把这些知识梳理出来,分享给大家。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。