基于mappwidget的手绘地图

前段时间由于公司项目需要使用地图功能,刚开始看到功能需求的时候,以为只是简单简单的定位和基础地图的展示,于是就决定使用比较常用的百度地图,或者高德地图。项目启动之后,就开始接入百度地图的SDK开始做开发。当需求的功能基本完成的时候,一演示,经理说不是想要的效果,要把底图换成特定地方的地图,并且只展示指定的区域。这个需求让我犯难了,于是开始在百度地图官网上查询百度地图是否有这样的功能,果然百度地图的SDK还是很强大的,的确给开发者提供了这样的API,让开发者可以指定一张图片替换掉地图上指定的区域。但这个似乎经理的要求还是有一些不一样,替换完之后还要只显示这块区域,于是继续在官网上寻找答案,这次却没有收获,(在这里也希望阅读到这篇文章并且知道方法的大神可以给我留言)于是只能放弃使用百度地图了。之后又想到了既然是使用一张特定的地图那肯定就是有图片咯,那就用图片控件来展示不就好了,按照这个思路试了一下,可是烦人的OOM这个方法也被pass了(图片大小12702*9243)。于是开始在网上搜索解决办法,终于在一个博客中看到了一个叫mappwidget的库,用于手绘地图,这个似乎和我的需求很吻合。于是按照博客中的步骤开始生成地图资源,然后导入到项目里,然后初始化控件,一运行,项目跑起来了,基本满足需求,于是马上找经理演示,结果经理一看,提出了一堆问题,什么图片放大缩小不够平滑,缩放每次只能缩放一个等级.......让我一周内解决这些问题。一周!开什么玩笑!我才刚刚找到这个库,而且网上的资料也有限,这下可怎么办呢,不过还好这是个开源的项目,只能从源码上下手了,看来这一周注定会过得很充实啊。

开源项目地址:https://github.com/lemberg/mappwidget 里面包含了项目源码和jar包,下面我们就一步一步完成手绘地图的开发

1,使用Map Slicing Tool工具制作瓦片地图集

      1,以插件形式安装该工具

打开eclipse的安装目录——plugins目录——将工具jar包粘贴——重启eclipse

      2,在eclipse中用生成瓦片地图集

开发eclipse——Window——show View——Other——mAppWidget——Map Slicing Tool

      3,根据工具栏的操作界面来选择地图原件,并选择生成地图集的保存地址,然后点击Export开始生成,如图

(其中Tile Size表示切割的每张图片的像素大小;GPS Positioning勾选之后可以输入图片四个点的坐标和对应的GPS坐标)

        4,根据生成的保存地址找到生成的瓦片地图集文件夹,然后导入到项目中,项目文件结构如图:

到此瓦片地图集就完成了。

2,导入mappwidget库,展示地图

1,导入mappwidget_1.4.1_trial.jar

2,布局,用任何一种布局方式作为地图的载体,我以LinearLayout为例,如图:

700

3,调用地图类MapWidget,如图:

初始化地图,并加载,如图:

到此手绘地图的基本展示就完成了。

手绘地图的更多操作请参考博客http://blog.csdn.net/wangyuetingtao/article/details/9207231


接下来我要讲的是在一周的时间里如何解决经理提出的问题。

首先是关于缩放不平滑,感觉跳度很大的问题

既然要解决问题,首先我们要明白问题产生的原因,根据官方的文档,瓦片地图切割工具默认的切割比列是1/2,就是

每一个级别长宽都缩小为上一个级别的1/2,所以在缩放的时候会感觉长宽的变化太过生硬,那既然这样,我们把切割

比列变大不就好了,改为3/4,每次只放缩1/4,这样看不来不就不会那么突兀了。于是通过修改工具类源码,解决了

瓦片地图集切割的问题。把重新切割的图片导入到项目中之后发现不是原来的效果。原来只改变了切割的图片是不够

的,mappwidget库的计算方式也要改变,再通过改变计算方式,这下总算看到效果了。

关于手势缩放每次只能放大一个级别的问题

在源码中监听手势的时候改变了图片缩放的状态,使得每次手指按下之后只能缩放一个级别,通过修改源码也能实现。

在我的项目中还要其他的需求,对源码还做了其他的改动,就不上传了,要是对上面两个问题感兴趣的可以留言。


  

手绘地图路线Android是一种基于Android平台开发的应用程序,主要功能是使用手绘的方式绘制地图路线。用户可以通过手指在手机屏幕上绘制出想要的路线,在应用程序中选择起始点和终点,然后通过算法计算出最佳的行驶路线,并显示在地图上。 手绘地图路线Android应用程序主要有以下几个特点: 1. 手绘功能:用户可以使用手指在手机屏幕上任意绘制路线,灵活性很高。通过触摸屏幕,用户可以简单直接地绘制出自己想要的路线。这种手绘的方式比起传统的输入地址或关键词搜索的方式更加直观和自由。 2. 算法计算最佳路线:应用程序会根据用户绘制的路线和选择的起点终点,使用算法进行路径规划,计算出最佳的行驶路线。这样可以帮助用户更方便地规划行程和导航行驶。 3. 地图显示:绘制好的路线会在地图上显示出来,让用户清晰地看到整个行驶路线。地图上会标注起始点和终点,以及沿途的重要标志物或景点,方便用户进行导航和参考。 4. 附加功能:除了绘制和显示路线之外,手绘地图路线Android还可以提供其他附加功能,比如导航功能、导入导出路线等。用户可以选择将绘制的路线保存下来,以后再次使用时直接导入即可。 总之,手绘地图路线Android是一款基于Android平台的应用程序,通过手绘的方式让用户自由绘制出自己想要的行驶路线,并计算出最佳路线,方便用户规划行程和导航行驶。这种应用程序可以提供更加个性化和直观的地图导航体验。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值