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

项目需求场景——

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

遇到的问题——

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

AMap.MAP_TYPE_NORMAL 普通地图

AMap.MAP_TYPE_SATELLITE 卫星地图

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

00918e060913?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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

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

00918e060913?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

卫星地图——毛都没有

解决方案——

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

00918e060913?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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

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

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

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

void addRemoteOverlay() {

final String url = "https://mt3.google.cn/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 = "https://mt3.google.cn/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了。

完美实现!

00918e060913?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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

以上。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值