一般来说,可以使用以下几种方式来控制地图的放大/缩小 : 1. 使用控件底部的缩放按钮 2.双击控件 3.pinch手势 4.物理按键 :I键标识缩小  :O键表示放大.(只有设备具有物理按键才行) 当然,你也可以使用自己的按钮实现放大和缩小 缩小一个地图级别,调用: mapWidget.zoomIn(); 增加一个地图级别,调用: mapWiget.zoomOut(); 获取当前地图级别,调用: mapWidget.getZoomLevel(); 地图级别还可以在初始化MapWidget 时,…
http://lemberg.github.io/mappwidget/user_guide.html 最近在看一些导游类应用,发现一些景区的导览图使用的完全是自定义地图,也就是手绘地图.这种小范围使用的,专业的地图给人以亲切的感觉.但是他们是如何实现的呢,网上找了找实现思路,都没有太满意的. 在一家英国的网站上,发现了一个类库,可以实现类似的功能.试了一下它提供的demo,发现功能强大的超过了我的预期.在这里分享给大家,希望给大家提供一个思路吧.  翻译的有不准确的地方,请见谅. 大家先看看中…
使用切图工具创建不同名称的地图资源.然后将这些资源放置到assert文件夹内. 像下面这样: 在代码中,根据不同的地图名称,查找地图. map = new MapWidget(this, "map", initZoomLevel); or map = new MapWidget(this, "map2", initZoomLevel);…
若显示当前用户位置,你需要执行以下步骤: 1.添加ACCESS_COARSE_LOCATION 和ACCESS_FINE_LOCATION权限在AndroidManifest.xml中 2.用mapWidget.setShowMyPosition(true)来显示当前用户的位置 得出的结果是,你应该看到地图上的位置标记: 如何改变位置指针指向的方式? 位置标记组成成分:圆圈指针.箭头指针.精确区域以及精确区域的边框.你可以改变标记的每个元素. 为了改变标记的每个元素,你需要执行以下步骤: 1.获…
最好的处理方式就是弹出一个对话框,将用户触摸过的控件罗列出来.你可以通过实现OnMapTouchListener来处理. 参考以下代码,实现上述功能: mapWidget.setOnMapTouchListener(new OnMapTouchListener() { public void onTouch(MapWidget map, MapTouchedEvent event) { List objectTouchEvents = event.getTouchedObjectIds(); /…
为了在放大前后执行一些操作,你需要添加MapEventsListener 的实例到MapWidget,使用MapWidget.removeMapEventsListener移除该监听器. mapWidget.addMapEventsListener(new MapEventsListener() { public void onPreZoomOut() { // You can hide your map object's pop-up here } public void onPreZoomI…
首先,你在Eclispe开发环境中新建一个项目:然后,可以通过Eclispe项目管理工具把这个项目集成到你的app项目中.下面手册会手把手教你如何正确创建一个地图对象. 第一: 新建一个新的Anroid项目   第二:(注意项目细节) 设置项目名称 核对“Create new project in workspace”单选按钮是否选择 选择“Build Target” 检查和命名“Create activity” 设置“Min SDK Version”版本  注:其中Eclispe中的按钮或名词…
你可以使用以下几个方法: MapWidget.scrollMapTo(android.location.Location location); MapWidget.scrollMapTo(android.graphics.Point position); MapWidget.scrollToCurrentLocation(); MapWidget.jumpTo(android.location.Location location); MapWidget.jumpTo(android.graphi…
这个很简单,想要显示或隐藏任意类型的地图对象,首先要对地图对象进行分类.不同类型的地图对象放置到不同的地图图层上,然后控制地图图层的显示/隐藏即可. 实例: Layer sportsLayer = mapWidget.getLayerById(SPORTS_LAYER); sportsLayer.setVisible(true); // Shows the layer sportsLayer.setVisible(false); // Hides the layer…
为了将地图对象放置到某个特殊的地理位置上,你需要: 1. 创建地图对象 2.添加地图对象到图层(任何位置) 3. 移动该地图对象,使用 MapObject.moveTo(Location location) 方法 示例代码: private void addPOI() { Layer layer = map.getLayerById(SPORTS_LAYER); int objectId = 0; Drawable drawable = getResources().getDrawable(R.…
为了展示选中的点,你需要完成以下步骤: 1.创建或者获得一个已经存在的图层 2.创建代表选中点的地图对象 3.把地图对象添加到图层 创建新图层 使用以下代码片段创建图层 int COFFEE_SHOPS_LAYER = 1; Layer layer = mapWidget.createLayer(COFFEE_SHOPS_LAYER); 根据索引或者ID获得一个已经存在的图层 int COFFEE_SHOPS_LAYER = 1; Layer layer = mapWidget.getLayer…
地图资源可以通过Slicing Tool工具生成,教程如下: 1.打开Eclipse标准版4.3.2,以Java项目形式导入”slicingtool“项目,运行.(必须是eclipse4.3.2及以上版本,不然会少包而报错) 2.此时会新启一个eclipse,在新的里面widow-->show view-->mAppWidget-->Map Slicing Tool,打开窗口: 选择被切块格数大小(一般建议256格) 如果你想使用地图的GPS特点,填写校正数据 Export后,会得到一个…
如何把javadoc添加到代码库中? How to attach javadoc to the library? 项目属性——>Java Build Path——>Libraries.选择mappwidget的javaDoc位置,然后点击Edit 选择“Javadoc in archive” 单选按钮 选择“Workspace file” 单选按钮 在“Archive path”编辑区域中写上mappwidget.jar的路径 在“Path within archive”编辑区域输入“java…
离线地图是一张被切成类似瓷砖般格子图像组成,这些被切开的格子组织成多个缩放级别.缩放级别是从0开始.0这个缩放级别,地图图像的尺寸为1*1像素.在每下一个缩放级别,图像尺寸则会两倍递增. 每个地图都是有层和地图对象的. 层是一个抽象的东西,它用来存放地图对象.层可见或不可见.如果层是不可见的,那么存放此层中的地图对象在地图上也是不可见的. 地图对象是可以在地图上显示的对象,其中绘制对象可以用来显示地图对象.地图对象可以添加到任何层,并且对象坐标是以像素为单位. 为了定义一个对象的位置,坐标用原本…
为了响应touch事件,需要设置OnMapTouchListener 示例: private void initMapEventsListener() { mapWidget.setOnMapTouchListener(new OnMapTouchListener() { public void onTouch(MapWidget map, MapTouchedEvent event) { List objectTouchEvents = event.getTouchedObjectIds();…
你有两种方式确定用户的当前位置: 1.使用安卓标准方式 2. 使用MapWidget的监听器 标准方式: 在你的acivity中加入: LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME, MIN_DISTANCE, new…
一般来说,可以使用以下几种方式来控制地图的放大/缩小 : 使用控件底部的缩放按钮 双击控件 pinch手势 物理按键 :I键标识缩小 :O键表示放大.(只有设备具有物理按键才行)        当然,你也可以使用自己的按钮实现放大和缩小 缩小一个地图级别,调用: mapWidget.zoomIn(); 增加一个地图级别,调用 mapWiget.zoomOut(); 获取当前地图级别,调用: mapWidget.getZoomLevel(); 地图级别还可以在初始化MapWidget 时,由构造器…
文章翻译完了,梳理一下,附Demo下载 基于mAppWidget实现手绘地图(一)–简介 基于mAppWidget实现手绘地图(二)–概要 基于mAppWidget实现手绘地图(三)–环境搭建 基于mAppWidget实现手绘地图(四)—如何附加java doc 基于mAppWidget实现手绘地图(五)—如何创建地图资源 基于mAppWidget实现手绘地图(六)–如何展示地图对象  基于mAppWidget实现手绘地图(七)–根据坐标添加地图对象 基于mAppWidget实现手绘地图(八)–…
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 因为想要使用Android P模拟器,所以需要将Android Studio升级到3.2版本以上. 按照官网的说法:参考<https://developer.android.google.cn/about/versions/pie/android-9.0-migration#ptb> 下载Android Studio3.2 方式一:下载地址(需要FQ):https://developer.android.google.cn/s…
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio升级到3.2之后,运行旧项目的时候出现了各种情况,特此记录下. 一.打包选项多了,一般情况下选择APK即可 二.打包发布的时候报错:Caused by: java.net.SocketTimeoutException: Read timed out org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:…
ImageSwitcher组件的主要功能是完毕图片的切换显示,比如用户在进行图片浏览的时候.能够通过button点击一张张的切换显示的图片,并且使用ImageSwitcher组件在每次切换的时候也能够为其添加一些动画的效果,此类定义例如以下: java.lang.Object    ↳ android.view.View      ↳ android.view.ViewGroup        ↳ android.widget.FrameLayout          ↳ android.wid…
AsyncTask简介 Android的UI线程主要处理用户的按键,触屏和View的绘制等,不能在里面处理耗时的操作,否则会出现ANR,因此耗时的操作要单独开一个线程处理,但是新线程不能直接处理UI线程的View. AsyncTask的使用方法 代码示例 本实例只有一个按钮和文本框,点击按钮从网络下载数据,然后又在文本框显示. package peng.liu.test; import android.app.Activity; import android.app.ProgressDialog…
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio自带录制屏幕功能,那么就可以很方便地将手机上的屏幕操作录制成视频.然后借助一些软件或者网站转换成gif文件. Android Studio录制屏幕 前提:将手机通过数据线连接到电脑上并实现Android Studio和手机相连.否则录制屏幕按钮是灰色的,不可点击. 找到录制屏幕按钮 Android Studio2.2.2版本 Android Studio3.0.1版本 录制并保存视频 点击上面的按钮…
今天我们继续实验Bridge方式的网络配置. Bridge的逻辑原理图如下: 上图中的“br0”就充当了一个桥的作用,主机上的物理网口eth0等根据需要加入到这个桥里面,所有虚拟机要跟外界通信都通过这个br0, br0再经过真实的物理接口eth0等与外界通信.与NAT不同,桥接方式虚拟机跟主机一样能获得主机所在网络的IP地址,不再由主机进行伪装.那么br0是如何在Ubuntu主机上创建出来的呢?虚拟机如何使用br0? 1.        br0的创建 在Ubuntu下br0的创建如下: 打开/e…
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用. 由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响. JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9…
Katalon的常规方法是先抓取元素并保存到仓库,在脚本中需要用到的时候调取,但假如元素属性和个数是可变的,就不能事先保存到仓库了,需要在脚本运行时实时创建. 代码运行时实时创建一个元素对象的例子import com.kms.katalon.core.testobject.ConditionTypeimport com.kms.katalon.core.testobject.TestObjectimport com.kms.katalon.core.webui.keyword.WebUiBuil…
好家伙,这个有点难. 1.代理对象Proxy Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找.赋值.枚举.函数调用等). 拦截对象中任意属性的变化,包括:查get,增和改set,删除delete 1.1.语法: const p = new Proxy(target, handler) 1.1.1参数: target 要使用 Proxy 包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理). handler 一个通常以函数作为属性的对象,各…
概述 Microsoft Tech Summit 2018 微软技术暨生态大会将于10月24日至27日在上海世博中心举行,这也会是国内举办的最后一届 Tech Summit,2019 年开始会以 Microsoft Ignite Tour 的形式出现,大家可以在官网查看本次会议信息:https://www.microsoft.com/china/techsummit/2018/ 今年非常荣幸最终入选了分会场课程,我会在 27日下午5点给大家带来 “利用 Windows 新特性开发出更好的手绘视频…
Bootstrap 进度条.在本教程中,你将看到如何使用 Bootstrap 创建加载.重定向或动作状态的进度条. Bootstrap 进度条使用 CSS3 过渡和动画来获得该效果.Internet Explorer 9 及之前的版本和旧版的 Firefox 不支持该特性,Opera 12 不支持动画. 默认的进度条 创建一个基本的进度条的步骤如下: 添加一个带有 class .progress 的 <div>. 接着,在上面的 <div> 内,添加一个带有 class .prog…
Bootstrap 提供的用于定义导航元素的一些选项.它们使用相同的标记和基类 .nav.Bootstrap 也提供了一个用于共享标记和状态的帮助器类.改变修饰的 class,可以在不同的样式间进行切换. 表格导航或标签 创建一个标签式的导航菜单: 以一个带有 class .nav 的无序列表开始. 添加 class .nav-tabs. 下面的实例演示了这点: <!DOCTYPE html> <html> <head> <title>Bootstrap 实…