Добавление вызова по клику для значков карты - PullRequest
0 голосов
/ 25 февраля 2019

Я борюсь с добавлением события щелчка к точкам на карте mapbox.Мне нужно добавить источник из SQL-запроса бэкэнда в шаблон hbs.Я попытался просто добавить business1 в качестве источника без цикла for, но я получаю предупреждение о недопустимом объекте geojson.Если я добавляю просто «местоположения» в качестве идентификатора, то это, очевидно, дает мне предупреждение о том, что идентификатор уже существует на карте.

Так как же я могу добавить вызов onclick для идентификаторов динамики?

Какя загружаю точки

business1 = {{{businesses}}}

for(i=0;i<business1.length;i++){
  // Add the data to your map as a lyer
  map.addLayer({
    id: 'locations'+[i],
    type: 'symbol',
   minzoom: zoomThreshold,
    // Add a GeoJSON source containing place coordinates and information.
    source: {
      type: 'geojson',
      data: business1[i]
    },
    layout: {
      'icon-image': 'circle-stroked-15',
      'icon-allow-overlap': true,
    }
  });

}

Как называется щелчок карты - с добавленным [i], просто чтобы показать, что я думаю

map.on('click', function(e) {

  var features = map.queryRenderedFeatures(e.point, {
    layers: ['locations'+[i]] // replace this with the name of the layer
  });

  if (!features.length) {
    return;
  }

Что еще я пробовал -но всегда возвращает одно и то же местоположение независимо от того, на что нажали

   for(i=0; i<business1.length;i++){

    var features = []
    var feature = [i]
        feature.dataPosition = i;
 var clickedNameClicked = names[this.dataPosition]
 console.log(clickedNameClicked)

  features.push(business1[i]);

  }

1 Ответ

0 голосов
/ 07 марта 2019

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

Я пытался просто добавить business1 в качестве источника без цикла forно я получаю предупреждение о недопустимом объекте geojson.

Это явный признак того, что с вашими бизнес-данными что-то не так, и вам следует обратиться к ним, прежде чем добавлять их на карту и беспокоиться о событиях кликов.Я бы порекомендовал использовать такой инструмент, как http://geojsonlint.com/, чтобы увидеть, что там происходит.

После того, как у вас будет действительный геоджон, будет намного проще добавлять события кликов к вашим иконкам.https://docs.mapbox.com/mapbox-gl-js/example/queryrenderedfeatures-around-point/


⚠️ Отказ от ответственности: в настоящее время я работаю в Mapbox ⚠️

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...