http://lemberg.github.io/mappwidget/user_guide.html
最近在看一些导游类应用,发现一些景区的导览图使用的完全是自定义地图,也就是手绘地图。这种小范围使用的,专业的地图给人以亲切的感觉。但是他们是如何实现的呢,网上找了找实现思路,都没有太满意的。
在一家英国的网站上,发现了一个类库,可以实现类似的功能。试了一下它提供的demo,发现功能强大的超过了我的预期。在这里分享给大家,希望给大家提供一个思路吧。
翻译的有不准确的地方,请见谅。 大家先看看中文,是否满足自己的需要,省的浪费时间。
mAppWidget是一个代码库,使用它可以很方便的为android手机开发自定义地图的应用。这个类库提供了很多服务,方便android开发者集成地图到自己的项目,如示例项目和导游地图。使用mAppWidget库,可以快速的将一张图片转变成可交互的地图。
mAppWidget支持很多功能,比如缩放,平移,图层和对象。可点击的地图上的大头针,可添加注释的信息气泡使得管理地图图层和对象很简单。
该类库使用时不需要联网,不像其他的解决方案。mAppWidget使用了切片技术,可以将较小的切片拼装成较大的地图。这种方法可以节省内存,获得更快的响应速度,非常适合移动设备。
图层上的图像放大时不受地图图片分辨率的限制,对于超出最大缩放级别的图层上的图像,该类库会自动调整。
地图的生成已经提供了在线的工具,可以把一张图片切割成可供你的项目使用的地图资源。
mAppWidget功能list:
- 将任意图片转换成地图
- 切片引擎负责渲染
- 支持GPS地位
- 放大/缩小
- 支持手势缩放
- 支持双击缩放
- 摇镜头
- 惯性滚动
- 移动流畅
- 支持多地图
- animation到地图上的某点
- 添加/移除图层
- 添加/移除对象
- 点击气泡
- 支持离线展示
稍后翻译其他内容,最后上传类库和使用demo。
Android基于mAppWidget实现手绘地图(一)--简介的更多相关文章
-
Android基于mAppWidget实现手绘地图(三)--环境搭建
首先,你在Eclispe开发环境中新建一个项目:然后,可以通过Eclispe项目管理工具把这个项目集成到你的app项目中.下面手册会手把手教你如何正确创建一个地图对象. 第一: 新建一个新的Anroi ...
-
Android基于mAppWidget实现手绘地图(十一)–移动地图到某个坐标
你可以使用以下几个方法: MapWidget.scrollMapTo(android.location.Location location); MapWidget.scrollMapTo(androi ...
-
Android基于mAppWidget实现手绘地图(十五)–如何控制放大缩小
一般来说,可以使用以下几种方式来控制地图的放大/缩小 : 1. 使用控件底部的缩放按钮 2.双击控件 3.pinch手势 4.物理按键 :I键标识缩小 :O键表示放大.(只有设备具有物理按键才行) ...
-
Android基于mAppWidget实现手绘地图(十四)–在一个应用中使用多个地图
使用切图工具创建不同名称的地图资源.然后将这些资源放置到assert文件夹内. 像下面这样: 在代码中,根据不同的地图名称,查找地图. map = new MapWidget(this, " ...
-
Android基于mAppWidget实现手绘地图(十三)–如何显示/隐藏任意类型的地图对象
这个很简单,想要显示或隐藏任意类型的地图对象,首先要对地图对象进行分类.不同类型的地图对象放置到不同的地图图层上,然后控制地图图层的显示/隐藏即可. 实例: Layer sportsLayer = m ...
-
Android基于mAppWidget实现手绘地图(十二)–显示当前用户位置
若显示当前用户位置,你需要执行以下步骤: 1.添加ACCESS_COARSE_LOCATION 和ACCESS_FINE_LOCATION权限在AndroidManifest.xml中 2.用mapW ...
-
Android基于mAppWidget实现手绘地图(七)–根据坐标添加地图对象
为了将地图对象放置到某个特殊的地理位置上,你需要: 1. 创建地图对象 2.添加地图对象到图层(任何位置) 3. 移动该地图对象,使用 MapObject.moveTo(Location locati ...
-
Android基于mAppWidget实现手绘地图(六)–如何展示地图对象
为了展示选中的点,你需要完成以下步骤: 1.创建或者获得一个已经存在的图层 2.创建代表选中点的地图对象 3.把地图对象添加到图层 创建新图层 使用以下代码片段创建图层 int COFFEE_SHOP ...
-
Android基于mAppWidget实现手绘地图(五)--如何创建地图资源
地图资源可以通过Slicing Tool工具生成,教程如下: 1.打开Eclipse标准版4.3.2,以Java项目形式导入”slicingtool“项目,运行.(必须是eclipse4.3.2及以上 ...
随机推荐
-
cacti监控juniper路由器
之前也没有写过博客,但是最近一直在做监控.从网上查找很多资料都还是感觉差一点.所以自己添加一份我在cacti监控路由器的步骤. 环境,ubuntu14.04,apt-get install cacti ...
-
hashCode与equals的区别与联系
一.equals方法的作用 1.默认情况(没有覆盖equals方法)下equals方法都是调用Object类的equals方法,而Object的equals方法主要用于判断对象的内存地址引用是不是同一 ...
-
iOS开发网络篇—NSURLConnection基本使用(一)
一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法.请求头.请求体.. ...
-
BAPI 使用
BAPI_ACC_DOCUMENT_POST *---BAPI_ACC_DOCUMENT_POST 所需要的参数 DATA: OBJ_TYPE LIKE BAPIACHE09-OBJ_TYPE, ...
-
HDU 2026 首字母变大写
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int ma ...
-
hdu5248 序列变换
百度之星的题.其实最简单的方法是二分答案,我竟然没想到,直接去想O(n)的去了,最后导致滚粗... 题意就是给一个数列,要求把它处理成递增序列. 首先我想到了O(n^2)的算法,然后再优化成O(n)过 ...
-
linux 防火墙iptables简明教程
前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...
-
关于socket阻塞与非阻塞情况下的recv、send、read、write返回值(转载)
1.阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小,特别:返回值 ...
-
GUI(主)线程与子线程之间的通信(用信号槽通讯)
在主线程上,可以控制子线程启动,停止,清零 如果子线程启动的话,每一秒钟会向主线程发送一个数字,让主线程更新界面上的数字. 程序截图: 上代码: #include <QtGui> #inc ...
-
IOS单例模式(Singleton)
IOS单例模式(Singleton) 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 1.单例模式的要点: 显然单例模 ...