博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android】3.23 示例23--瓦片图功能
阅读量:6254 次
发布时间:2019-06-22

本文共 8533 字,大约阅读时间需要 28 分钟。

分类:C#、Android、VS2015、百度地图应用; 创建日期:2016-02-04

一、简介

地图SDK自v3.6.0起,新增瓦片图层(tileOverlay), 该图层支持开发者添加自有瓦片数据,包括本地加载和在线下载两种方式。该图层可随地图的平移、缩放、旋转等操作做相应的变换,它仅位于底图之上(即瓦片图层将会遮挡底图,不遮挡其他图层),瓦片图层的添加顺序不会影响其他图层(例如:POI搜索图层、我的位置图层等)的叠加关系,适用于开发者拥有某一区域的地图,并希望使用此区域地图覆盖相应位置的百度地图。

1、瓦片划分规则

百度地图SDK会根据不同的比例尺将地图划分成若干个瓦片,并且以中心点经纬度(0,0)开始计算瓦片,当地图显示缩放级别增大时,每一个瓦片被划分成4个瓦片。如:

地图级别为0时,只有1张瓦片;

地图级别为1时,会分成 1 * 4 = 4 张瓦片;

依次类推。

当地图级别为n时,总共划分的瓦片为:4的n次方。

为了保证瓦片的显示效果,第n级的瓦片显示的地图level范围为[n - 0.5, n + 0.5)

2、本地加载和在线下载

瓦片图层分为本地加载和在线下载两种绘制方式。

(1)本地加载方式,将图片打包于应用内(保存到Assets文件夹下),适用于图片较小且不需要频繁变更的情况。

(2)在线下载,将图片存放于开发者提供的服务中,提供给SDK一个URL模板,通过URLTileLayer调用在线瓦片图层的URL。

二、运行截图

简介:瓦片图层支持开发者添加自有瓦片数据,包括在线下载和本地加载两种方式。

详述:

(1)在线下载方式

(2)本地加载方式

本示例运行截图如下:

三、设计步骤

1、添加demo23_tile_overlay.xml文件

在layout文件夹下添加该文件,代码不再列出。

2、添加Demo23TileOverlay.cs文件

在SrcSdkDemos文件夹下添加该文件,然后将代码改为下面的内容:

using System;using Android.App;using Android.OS;using Android.Widget;using Com.Baidu.Mapapi.Map;using Com.Baidu.Mapapi.Model;using Android.Graphics;using Android.Util;namespace BdMapV371Demos.SrcSdkDemos{    ///     /// TileOverlay 测试demo    ///     [Activity(Label = "@string/demo_name_tileoverlay")]    public class Demo23TileOverlay : Activity, BaiduMap.IOnMapLoadedCallback    {        private TextureMapView mMapView;        private BaiduMap mBaiduMap;        // 设置瓦片图的在线缓存大小,默认为20 M        public const int TileTmpOnlineCache = 20 * 1024 * 1024;        public string onlineUrl = "http://api0.map.bdimg.com/customimage/tile"            + "?&x={x}&y={y}&z={z}&udt=20150601&customid=light";        private TileOverlay tileOverlay;        private MapStatusUpdate mMapStatusUpdate;        private bool mapLoaded = false;        protected override void OnCreate(Bundle savedInstanceState)        {            base.OnCreate(savedInstanceState);            SetContentView(Resource.Layout.demo23_tile_overlay);            mMapView = FindViewById
(Resource.Id.mapview); mBaiduMap = mMapView.Map; mBaiduMap.SetOnMapLoadedCallback(this); MapStatus.Builder builder = new MapStatus.Builder(); builder.Zoom(16.0f); builder.Target(new LatLng(39.914935D, 116.403119D)); mMapStatusUpdate = MapStatusUpdateFactory.NewMapStatus(builder.Build()); mBaiduMap.SetMapStatus(mMapStatusUpdate); Button btnOnline = FindViewById

3、修改MainActivity.cs文件

在MainActivity.cs文件的demos字段定义中,去掉【示例23】下面的注释。

运行观察效果。

转载于:https://www.cnblogs.com/rainmj/p/5181864.html

你可能感兴趣的文章
IT人的自我导向型学习:学习的4个层次
查看>>
基于Hadoop数据仓库Hive1.2部署及使用
查看>>
利用shell计算find命令查出后的总文件大小
查看>>
性能之外:LSI 6Gb/s SAS RAID渠道先行
查看>>
SCCM2012系列之十二,SCCM2012部署操作系统
查看>>
Docker镜像导致centos-root根分区容量爆满
查看>>
VB无所不能之七:VB的多线程(2)
查看>>
快速部署远程同步服务Rsync
查看>>
玩 High API 系列之:UGC内容检测
查看>>
Lync Server 2010边缘需要的公网IP数量
查看>>
开发常见错误解决(2)WSE3.0安装问题,VS2005集成
查看>>
使用扩展方法对调用进行验证
查看>>
这样学习Unix下C语言编程最有效
查看>>
Office 365强势来袭PART2:云中SharePoint
查看>>
一个字符串找查的例子
查看>>
云计算概况及第一个Azure程序
查看>>
C# 使用NPlot绘图技巧
查看>>
寻找生命的方向终究要靠自己
查看>>
Fresnel Reflection - 菲涅尔反射
查看>>
IBM WebSphere
查看>>