Отображать и фильтровать тип geoJSON вместо векторного типа - PullRequest
0 голосов
/ 22 сентября 2018

Я использую этот пример непосредственно из Mapbox для фильтрации объектов в представлении карты, поскольку именно эту функцию я ищу.

Однако я изо всех сил пытался заменить.addLayer расстаться с GeoJSON, который я получаю от MongoDB.Набор данных, который я хочу отобразить и отфильтровать из MongoDB, выглядит следующим образом:

{
    "_id" : ObjectId("5ba64a3c517f3a78325d1534"),
    "geometry" : {
        "type" : "Point",
        "coordinates" : [ 
            13.3325, 
            52.4564
        ]
    },
    "properties" : {
        "name" : "Roberts",
        "entry" : "Tax Advisor",
        "fromPrice" : 125,
        "unit" : "hour"
    },
    "type" : "Feature",
    "__v" : 0
},
{
    "_id" : ObjectId("5ba64a3c517f3a78325d1533"),
    "geometry" : {
        "type" : "Point",
        "coordinates" : [ 
            13.314, 
            52.4901
        ]
    },
    "properties" : {
        "name" : "Taylor",
        "entry" : "Law Firm",
        "fromPrice" : 160,
        "unit" : "hour"
    },
    "type" : "Feature",
    "__v" : 0
}

Конечно, дело не в аэропортах, а в том же понятии.Буду признателен, если кто-нибудь поможет мне включить geoJSON в этот фильтр.Большое спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

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

      map.addSource("entries", {
          "type": "geojson",
          "data": {
              "type": "FeatureCollection",
              "features": database-data-here
          }
      });

      map.addLayer({
          "id": "locations",
          "type": "circle",
          "source": "entries",
          "paint": {
              "circle-radius": 8,
              "circle-color": "#41b9c1"
          },
          "filter": ["==", "$type", "Point"],
      });
0 голосов
/ 22 сентября 2018

Используйте приведенный ниже код для преобразования геоджона в вектор.

var vector = new ol.layer.Vector({
    source: new ol.source.Vector({
        features: (new ol.format.GeoJSON()).readFeatures(JSON.stringify(geoData),
    { featureProjection: ol.proj.get('EPSG:4326')})
    }),
   style: new ol.style.Style({
    image: new ol.style.Circle({
        radius: 5,
        stroke: new ol.style.Stroke({
            color: 'red',
            width: 2
        }),
        fill: new ol.style.Fill({
            color: '#fff'
        })
    })
})
    });
...