Стилизация только для страны с поиском с помощью Leaflet & GeoJson - PullRequest
0 голосов
/ 03 августа 2020

это мой первый пост, поэтому, если я сделал что-то неправильно, заранее прошу прощения, так как я очень новичок.

Я работаю с geo JSON Leaflet и пытаюсь сделать следующее:

  1. Когда пользователи вводят страну в поле поиска, карту необходимо масштабировать до этой страны
  2. Область этой страны должна изменить цвет. Если выполняется другой поиск, страна предыдущего поиска меняет цвет на исходный.

Мне удалось выполнить первую задачу, но я не могу выполнить вторую. Вот код, который я написал:

//geoJSON object including all countries
let geoObject = {
    "type": "FeatureCollection",
    "name": "borders",
    "features": [{
          "type": "Feature",
          "properties": {
            "FIPS": "AC",
            "ISO2": "AG",
            "ISO3": "ATG",
            "UN": 28,
            "NAME": "Antigua and Barbuda",
            "AREA": 44,
            "POP2005": 83039,
            "REGION": 19,
            "SUBREGION": 29,
            "LON": -61.783,
            "LAT": 17.078
          },
          "geometry": {
            "type": "MultiPolygon",
            "coordinates": [
                [
                  [
                    [-61.69, 17.02],
                    [-61.74, 16.99],
                    [-61.83, 17.0],
                    [-61.88, 17.02],
                    .
                    .
                    .
  }

function countryStyle(country) {
//country is the input from search box converted to ISOA2
  for (var i = 0; i <= 245; i++) {
    if (Object.values(geoObject.features[i].properties).includes(country)) {
      console.log('exists' + country);
    }
  }
  function style(feature) {
    console.log(feature);
    return {
      fillColor: "red",
      weight: 2,
      opacity: 1,
      color: 'white',
      dashArray: '3',
      fillOpacity: 0.7
    };
  }
  L.geoJson(geoObject, {
    style: style
  }).addTo(mymap);
}

Очевидно, каждый поиск приводит к тому, что вся карта меняет цвет на красный. Кто-нибудь может объяснить, что я делаю не так?

Спасибо!

...