Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Mapbox GL JS补充地理编码器的本地数据_Javascript_Mapbox_Mapbox Gl Js - Fatal编程技术网

Javascript 使用Mapbox GL JS补充地理编码器的本地数据

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++) {

我正在运行一些设施的位置地图,上面有它们的名称和坐标数据。我希望地理编码器能够搜索设施的名称

Mapbox有一个很好的例子,但是他们的例子展示了一个用例,其中数据集被加载到实际代码中。我的数据集要大得多,它当前位于项目文件夹中的.geojson文件中

如何将此代码转换为适用于我的示例

我尝试使用

  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;ifeature['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代码调用它。我在原始帖子中做了一个编辑,解释了发生了什么。我不认为这是理想的,因为它必须加载同一个数据集两次,但这是最简单的方法,我可以使它工作