openlayers3 在地图上叠加WFS查询矢量图层

随着终端设备计算能力的加强,用户在使用地图的时候也需要越来越多的交互效果。比如现在很火的室内导航,为了获得好的用户体验,就需要当用户单击某一商店的时候该商店的颜色能相应的变化,这就需要叠加矢量图层。如何能在瓦片地图之上叠加矢量图层呢,这个就需要用到WFS查询。

我的思路是:基于WFS查询把得到需要矢量显示的图层中数据,然后再显示。具体思路为:

1.通过geoserver的WFS服务查询所需要矢量显示的数据信息

2.设置矢量数据的显示样式

3.openlayers添加矢量图层

4.设置鼠标移上去的颜色变化效果

// Source retrieving WFS data in GML format using AJAX
    var vectorSource = new ol.source.ServerVector({
        format : new ol.format.WFS({
            featureNS : ‘http://www.indoornavigation.com‘,
            featureType : ‘tingchewei‘
        }),
        loader : function(extent, resolution, projection) {
            extent = [ 120.220336914063, 30.2083336275748, 120.221145629883,
                    30.2088940588137 ];
            var url = ‘http://10.16.36.101:8080/geoserver/wfs?‘
                    + ‘service=WFS&request=GetFeature&‘
                    + ‘version=1.1.0&typename=indoorNavigation:tingchewei‘;

            $.ajax({
                url : url
            }).done(function(response) {
                vectorSource.addFeatures(vectorSource.readFeatures(response));
            });
        },
        strategy : ol.loadingstrategy.createTile(new ol.tilegrid.XYZ({
            maxZoom : 19
        })),
        projection : ‘EPSG:4326‘
    });
// Vector layer
    var vectorChewei = new ol.layer.Vector({
        source : vectorSource,
        style : new ol.style.Style({
            fill : new ol.style.Fill({
                color : ‘rgba(12, 25, 25, 0.1)‘
            }),
            stroke : new ol.style.Stroke({
                color : ‘black‘,
                width : 2
            })
        })
    });
    map.addLayer(vectorChewei);

var featureOverlay = new ol.FeatureOverlay({
        map : map,
        style : function(feature, resolution) {
            var text = resolution < 5000 ? feature.get(‘name‘) : ‘‘;
            if (!highlightStyleCache[text]) {
                highlightStyleCache[text] = [ new ol.style.Style({
                    stroke : new ol.style.Stroke({
                        color : ‘#f00‘,
                        width : 1
                    }),
                    fill : new ol.style.Fill({
                        color : ‘rgba(255,0,0,0.6)‘
                    }),
                    text : new ol.style.Text({
                        font : ‘12px Calibri,sans-serif‘,
                        text : text,
                        fill : new ol.style.Fill({
                            color : ‘#000‘
                        }),
                        stroke : new ol.style.Stroke({
                            color : ‘#f00‘,
                            width : 3
                        })
                    })
                }) ];
            }
            return highlightStyleCache[text];
        }
    });

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-06 20:51:51

openlayers3 在地图上叠加WFS查询矢量图层的相关文章

Openlayers3 计算地图上任意两点间的距离

主要用的接口是new ol.Sphere(6378137).haversineDistance([x1,y1],[x2,y2]): 4326坐标系中计算两点距离的方式为: var a = new ol.Sphere(6378137).haversineDistance([120.21592590991689, 30.210793016606],[120.21670777384473, 30.211168525868086]); 版权声明:本文为博主原创文章,未经博主允许不得转载.

去百度API的百度地图准确叠加和坐标转换的解决方案研究

1.背景 目前项目上如果要使用百度地图,得加载百度的开发包,然后通过百度提供的接口来调用百度地图以及将需要标记的点显示在百度地图中等等. 此方案存在明显劣势: a.对原系统的破坏.一套从底层开发的系统,其地图的加载方式均是从底层通过换算行列号来进行加载的.而百度地图却必须脱离此方案通过调用百度API来实现,破坏了整个系统的架构,并且导致很多基于原架构的功能无法使用. b.自身发布的矢量服务等无法使用.因为百度采用的是非标准火星坐标,自己采集的大量shp数据如果不纠正到百度坐标系下,是无法正确叠加

怎么把百度(或高德)地图上查询的电话批量导出

怎么把百度地图上查询的电话批量导出呢? 怎么把高德地图上查询的电话批量导出呢? 这是很多做销售工作的业界精英们 迫切需要解决的问题. 因为他们需要大数据,作为他们微信销售,短信销售,电话销售的资源. 笔者经过一段时间的琢磨,经过一年多时间的反复测试,做出了导出高德地图的商家电话的软件. 界面尽量做到简洁,操作简单: 首先,选择需要采集的省份,城市: 输入需要采集的关键词,比如:汽车维修,宠物店,美容店.电动车 点击按钮[开始处理],系统将开始采集并处理采集到的商家数据,汇总成为一个EXCEL文件

【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注

原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo,酒店logo等) 如何在标注上显示信息窗口,以及添加文字标签等其他覆盖物: 最后,介绍一个获取坐标的给力工具. ---------------------------------------------------------------------------------------------------

Android百度地图 - 在地图上标注已知GPS纬度经度值的一个或一组覆盖物 - OPEN 开发经验库 - 360安全浏览器 8.1

首页   代码   文档   问答   资讯   经验   GitHub日报 登录   注册 www.open-open.com/libOPEN经验 投稿 全部经验分类  Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim C++ C# JSON Ruby Linux Nginx Docker 所有分类  >  开发语言与工具  >  移动开发  

OpenLayers 3 之 地图矢量图层(ol.layer.Vector)详解

在 GIS 中,地图一般分为两大类:栅格地图和矢量地图,栅格地图其实就是数码照片,只不过有的是卫星拍的.它们有一个共同特征,就是它们都是由很多个像素组成,像素大小是一致的,行高和列宽是一致的,从这个角度看,一幅遥感影像就像栅格. 矢量地图,是由很多要素组成的,每个要素都有自己的地理坐标,基于数学规则,无论矢量地图怎么放大,地图都不会失真.它是 OpenLayers 中非常重要的一种图层类型,利用矢量地图可以实现非常多的功能,如 动态标绘.调用 WFS 服务.编辑要素.可点击的要素.动态加载要素

百度地图的使用之获取数据库表中信息的坐标点显示在地图上

//通用封装好的js: var map = new BMap.Map("container"); //建树Map实例 var point = new BMap.Point(103.976032, 33.845509); // 建树点坐标 map.centerAndZoom(point, 6); // 初始化地图,设置中心点坐标和地图级别. //地图事件设置函数: map.enableDragging(); //启用地图拖拽事件,默认启用(可不写) map.enableScrollWhe

百度地图上的行政区域内部颜色的动态改变

今天刚完成百度地图上的行政区域内部颜色的动态改变(随时间).虽然能基本实现功能,但每次改变颜色时都要重新加载覆盖物(行政区域). 全部源代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w

调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加信息标注

前几天接了一个小项目,就是有关百度地图的,和我的上一篇不一样,上一篇是复制人家的源代码是把东西写死了的,这次的比较有难度,要调取他的接口,用js来实现. 下面我先说一下主要实现的功能,和要实现的页面 这个小项目分为前台和后台 前台需要两个页面,第一个页面是一打开就可以获得自己的实时位置,显示当前位置与当前的经纬度,这两项是自动获取的,还有标题和电话是可以自己添加的,点击添加,就是到达百度地图的页面,你刚刚添加的东西就会在这个地图上显示,形成一个标注,点击标注,里面显示的就是刚刚你添加的标题和电话