Как добавить внешние данные для геокодера в Mapbox GL JS - PullRequest
0 голосов
/ 10 июня 2019

Я запускаю карту расположения нескольких объектов с указанием их названия и координат.Я хочу, чтобы геокодер мог найти название объекта.

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'] = '? ' + feature.properties.HandlerId;
     feature['center'] = feature.geometry.coordinates;
      matchingFeatures.push(feature);
 }
}
  return matchingFeatures;
}

, чтобы получить данные в геокодер, но он не работает.Я получаю сообщение об ошибке "

myData не определен

Работающий плункер можно увидеть здесь https://plnkr.co/edit/UUaf6OCgvoavwshdUdN9?p=preview

Ожидаемый результат: Геокодервызвать данные .geojson в поле поиска. Фактический результат: геокодер не может найти .geojson.

Ошибка: «myData is notfined»

edit добавлен этот код, который включает новыйvar myData:

    function forwardGeocoder(query) {
  // Fetch data on server and serve me the raw geojson
  var myData = fetch('test-plnkr.json').then(res => res.json());
    var matchingFeatures = [];
    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) {
    // add a tree emoji as a prefix for custom data results
    // using carmen geojson format: https://github.com/mapbox/carmen/blob/master/carmen-geojson.md
    feature['place_name'] = '? ' + feature.properties.HandlerId;
    feature['center'] = feature.geometry.coordinates;
    //feature['place_type'] = ['park'];
    matchingFeatures.push(feature);
    }
    }
    return matchingFeatures;
    }

map.addControl(new MapboxGeocoder({
accessToken: mapboxgl.accessToken,
localGeocoder: forwardGeocoder,
zoom: 14,
placeholder: "Enter search e.g. Lincoln Park",
mapboxgl: mapboxgl
}));
...