android端实践openlayers离线地图

android端实践openlayers离线地图,第1张

笔者最近实践了利用openlayers在android app中实现离线地图应用,本文记录了笔者实践的思路。

1、加载本地的地图瓦片;

2、GPS定位;

3、叠加部件(矢量图层

android端用webview加载在线页面或离线的html页面都是没问题的,同时,android原生与JS之间可以互相调用。这一部分不是本文的重点,参考资料如下:

笔者想到ol加载地瓦片地图时,可以用tileUrlFunction返回一个瓦片的链接,例如:

本文献给大连机场,感谢您延误航班,使我有时间有耐心写完本文,谢谢。

:一般情况下我用的最多的是"moveend"事件,为什么呢,有些时候请求的数据太多,几万甚至几十万几百万,这个时候不可能是把这些数据全部渲染到地图上,那么我们只需要渲染当前屏幕的数据就可以,也就是按需加载,移动完成一次就请求一次当前屏幕的数据渲染。

通常需要在地图上标注出一些景点、建筑或者公共设施,可以选择使用矢量标注或者聚合标注。openlayers 添加矢量标注的原理是将标注添加到一个新建的矢量层上,再将矢量层添加到地图上叠加显示;聚合标注的原理同上,但它适用于标注的数据量非常大的场景,随着层级的放大,会展示更多的标注,缩小时,则将标注聚合显示,能够在大量加载标注时提高渲染性能。

1、矢量标注

2、聚合标注

openlayers 可以创建一个 Overlay 覆盖层,这个覆盖层能够展示自己写的 html 内容,从而实现添加各种所需的覆盖物。也可以通过这个方法来添加标注,但覆盖层添加的覆盖物会影响地图的拖动(即在覆盖物上进行滑动 *** 作时地图无法响应,虽然可以通过设置 stopEvent 将滑动事件传递到地图上,但这样会导致在IOS端的覆盖物无法进行点击 *** 作)。

因此如果要添加可以点击并且不影响地图拖动的标注时,建议使用矢量层标注,而如果要展示自定义的一些内容,如点击地图d出对话信息框、地图上的自定义按钮等则使用覆盖层更加合适。

1、加载覆盖层

2、添加地图点击监听事件

原理大致与添加矢量标注相同,都是添加在矢量图层上,不过这里添加的是线对象。

在 layerPreview 中,找到对应图层,用 openlayers 打开 、 是“读不出来”还是“读出一片全白的区域“,还是”直接让你下载一个WMS文件“ 如果是最后一种情况,将那个下载的 wms 文件用 文本文件 打开,里面有报错提示,然后贴出来,我们再分析

GeoJSON 用于读取和写入 geojson 文件,可以通过加载文件的方式,将文件解析后,直接将数据加载到图层上, GeoJSON 提供了读写文件和解析 JSON 的功能,一个 geojson 文件的格式如下所示,包括了 Feature 的 type 类型和 Feature 数组 features ,然后每一个 Feature 包括了几何体类型,ID值,属性信息、几何信息等。

ol/source/XYZ 用于图层加载 XYZ 数据格式的切片。通常是按钮规格来获取切片,比如当 X 和 Y 都为0时,表示左上角的切片。加载切图的时候也是根据当前切片所处的位置来动态设置 X``Y``Z 的值,一般是直接在 url 中拼接。如 >

在OpenLayers中,控件SelectFeature主要用于 *** 作(鼠标移入、移出、单击、双击)矢量图层(OpenLayersLayerVector)的要素。那么它是如何实现的呢,还是让我们看代码吧。

首先我们还是先把所有要用到类实例化出来,参考代码:

View Code

矢量要素的单击事件,仅需在实例化类时注册onSelect事件即可,参考代码:

View Code

矢量要素的鼠标移入事件,需要实例化时注册onSelect事件,同时设置hover属性为true,参考代码:

View Code

矢量要素的鼠标各种事件的混合 *** 作,如需要鼠标移入、移出、单击、双击等事件,参考代码:

View Code

对于事件的混合 *** 作行为,我们不能在callbacks对象中同时注册click和dblclick事件,这样的话单击事件会屏蔽双击事件。对于下述代码,dblclick事件永不触发:

View Code

Style 用于矢量图层的渲染,在添加矢量图层的时候,可以给图层中的几何体设置样式。样式类型包括 Circle , Fill , Icon , Image , RegularShape , Stroke , Text , TextPlacement 等。在创建 Style 的对象的时候,可以在构造函数中设置相关的属性参数来设置具体的样式。在渲染适量图层的时候,如果没有指定 Style ,将使用框架默认的样式信息,如下所示:

用于为几何体设置规则的样式,如果有指定一个半径,将设置为正多边形,如果指定了两个半径,将设置为星星的形状。

CircleStyle 可以为几何体设置圆形样式,比如给单个点可以设置一个圆形的样式。继承于 RegularShape 。

没什么新的方法,都是 RegularShape 继承下来的方法。

用于给图标设置样式。

用于设置边框的颜色,如果没指定时将使用默认的样式。

一个抽象类,主要用于创建子类,子类包括 RegularShape , CircleStyle , Icon 。

用于设置文本的样式。

方法主要是对属性值进行 get 和 set 的 *** 作。

个人博客

以上就是关于android端实践openlayers离线地图全部的内容,包括:android端实践openlayers离线地图、OpenLayers创建一个新的Vector图层并添加覆盖物,并监听图层事件、openlayers添加标注(含聚合标注)、覆盖物、绘制路线等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9535594.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存