Javascript 使用Mapbox GL JS补充地理编码器的本地数据
我正在运行一些设施的位置地图,上面有它们的名称和坐标数据。我希望地理编码器能够搜索设施的名称 Mapbox有一个很好的例子,但是他们的例子展示了一个用例,其中数据集被加载到实际代码中。我的数据集要大得多,它当前位于项目文件夹中的.geojson文件中 如何将此代码转换为适用于我的示例 我尝试使用Javascript 使用Mapbox GL JS补充地理编码器的本地数据,javascript,mapbox,mapbox-gl-js,Javascript,Mapbox,Mapbox Gl Js,我正在运行一些设施的位置地图,上面有它们的名称和坐标数据。我希望地理编码器能够搜索设施的名称 Mapbox有一个很好的例子,但是他们的例子展示了一个用例,其中数据集被加载到实际代码中。我的数据集要大得多,它当前位于项目文件夹中的.geojson文件中 如何将此代码转换为适用于我的示例 我尝试使用 var myData =getSource('BRdata'); 然后打电话 for (var i = 0; i < myData.features.length; i++) {
var myData =getSource('BRdata');
然后打电话
for (var i = 0; i < myData.features.length; i++) {
var feature = myData.features[I];
// handle queries with different capitalization than the source data by calling toLowerCase()
if (feature.properties.HandlerId.toLowerCase().search(query.toLowerCase()) !== -1) {
feature['place_name'] = 'TL;DR: getSource
is not a function and you need to re-request your data.
getSource
is not a function in your plunkr code, so I think you meant to write map.getSource
. Even still, map.getSource
isn't going to give you the raw GeoJSON data back. Check out this issue on Github in the mapbox-gl-js repository.
The suggestion by Vladimir is to request the data by doing a fetch
for it, which would look something like this:
// Fetch data on server and serve me the raw geojson
var myData = fetch('data.json').then(res => res.json());
for(var i=0;i feature['place\u name']='TL;DR:getSource
不是一个函数,您需要重新请求数据
getSource
在您的plunkr代码中不是一个函数,因此我认为您打算编写map.getSource
。即使如此,map.getSource
也不会返回原始的GeoJSON数据。请查看此项
Vladimir的建议是通过对数据执行获取
来请求数据,该操作如下所示:
谢谢,所以我在这里更新了代码,但是当我键入“abc1”(在“HandlerId”下的一个设施的名称仍然没有加载。更新了上面主要帖子中的代码错误是“TypeError:myData.features未定义[了解更多信息]”我改变了将变量移出代码并将其放在最上面的做法,但我仍然得到相同的错误。出于某种原因,myData.features未被识别。有什么想法吗?找到了。最后将geojson作为自己的变量重新加载,并由geocoder调用。@blg2是的,所以您只需要将geojson复制并粘贴到新的v中变量,然后使用geocoder代码调用它。我在原始帖子中做了一个编辑,解释了发生了什么。我不认为这是理想的,因为它必须加载同一个数据集两次,但这是最简单的方法,我可以使它工作