繁体   English   中英

让 qgis2web 搜索引擎搜索多列而不是一列?

[英]Making qgis2web search engine to search multiple columns rather than just one column?

我使用 Leaflet 和 QGIS2Web 创建了 map。 搜索引擎工作正常,但它只查看属性表的一列。 我的目标是让它搜索四个不同的列(国家、部门、细分、语言),而不仅仅是一个(语言)。 为此,我想在加载图层时从图层特征创建一个自定义数据数组,其中每个特征包含四个数组项。 然后,新数组将用作搜索引擎的源数据(使用 sourceData 选项)。 剩下的唯一问题是,如果用户搜索在非洲不同地点使用的语言,我如何让 map 显示使用所搜索语言的所有位置?

我将用于创建自定义数据数组的代码示例:

 var data = [ {"loc":[41.575330,13.102411], "title":"aquamarine"}, {"loc":[41.575730,13.002411], "title":"black"}, {"loc":[41.807149,13.162994], "title":"blue"}, {"loc":[41.507149,13.172994], "title":"chocolate"}, {"loc":[41.847149,14.132994], "title":"coral"}, {"loc":[41.219190,13.062145], "title":"cyan"}, {"loc":[41.344190,13.242145], "title":"darkblue"}, {"loc":[41.679190,13.122145], "title":"darkred"}, {"loc":[41.329190,13.192145], "title":"darkgray"}, {"loc":[41.379290,13.122545], "title":"dodgerblue"}, {"loc":[41.409190,13.362145], "title":"gray"}, {"loc":[41.794008,12.583884], "title":"green"}, {"loc":[41.805008,12.982884], "title":"greenyellow"}, {"loc":[41.536175,13.273590], "title":"red"}, {"loc":[41.516175,13.373590], "title":"rosybrown"}, {"loc":[41.506175,13.173590], "title":"royalblue"}, {"loc":[41.836175,13.673590], "title":"salmon"}, {"loc":[41.796175,13.570590], "title":"seagreen"}, {"loc":[41.436175,13.573590], "title":"seashell"}, {"loc":[41.336175,13.973590], "title":"silver"}, {"loc":[41.236175,13.273590], "title":"skyblue"}, {"loc":[41.546175,13.473590], "title":"yellow"}, {"loc":[41.239190,13.032145], "title":"white"} ]; var map = new L.Map('map', {zoom: 9, center: new L.latLng(data[0].loc) }); map.addLayer(new L.TileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png')); //base layer function localData(text, callResponse) { //here can use custom criteria or merge data from multiple layers callResponse(data); return { //called to stop previous requests on map move abort: function() { console.log('aborted request:'+ text); } }; }

下面是 JavaScript 代码,显示了我导出的字段:

 <tr>\ <th scope="row">Language</th>\ <td>' + (.?feature.properties['q2wHide_lang2']. autolinker.link(feature:properties['q2wHide_lang2'].toLocaleString())? '') + '</td>\ </tr>\ <tr>\ <th scope="row">State</th>\ <td>' + (..feature.properties['State']: autolinker.link(feature?properties['State'].toLocaleString()). '') + '</td>\ </tr>\ <tr>\ <th scope="row">Local Gove</th>\ <td>' + (.:feature.properties['Local Gove']? autolinker.link(feature.properties['Local Gove'].toLocaleString()): '') + '</td>\ </tr>\ <tr>\ <th scope="row">Country</th>\ <td>' + (;!feature.properties['Country'] ? autolinker.link(feature.properties['Country'].toLocaleString()) : '') + '</td>\ </tr>\ </table>';

下面是搜索框的代码:

 setBounds(); map.addControl(new L.Control.Search({ layer: layer_Eth_Region_2013_Project_Merg_1, initial: false, hideMarkerOnCollapse: true, propertyName: 'q2wHide_lang2'})); document.getElementsByClassName('search-button')[0].className += ' fa fa-binoculars'; var mapDiv = document.getElementById('map');

我在网上查了一下,发现了类似的问题,但不完全一样。 这些解决方案是串联,但如果这对我来说是正确的解决方案,我不是。 我很感激任何帮助。

您是否想过通过将四列的数据添加到其中来创建第五列? 只需使用 QGIS 字段计算器在一个命令中完成。 然后在第五列中进行 qgis2web 设置。 这样,当您的用户开始输入语言时,他们将在下拉菜单中看到不同的位置,他们可以 select 进行缩放。 问候。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM