Нужно ли добавлять источник на мою карту, чтобы использовать кластеризацию? - PullRequest
0 голосов
/ 13 июня 2019

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

https://www.mapbox.com/install/js/cdn-add/

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

Итак, у меня есть карта и некоторые маркеры.

Теперь я хочу добавить кластеризацию, и в примере:

https://docs.mapbox.com/mapbox-gl-js/example/cluster/

они добавляют источник:

map.addSource("earthquakes", {
})

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

Я думал о добавлении источника, но какой источник?Мне не нужен источник, у меня уже есть то, что мне нужно, плитки и маркеры ... но опция кластера находится в методе addSource на карте.Итак ... Я здесь потерян.

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

map.addSource("earthquakes", {
type: "geojson",
data: "https://docs.mapbox.com/mapbox-gl-js/assets/earthquakes.geojson",
cluster: true,
clusterMaxZoom: 14, // Max zoom to cluster points on
clusterRadius: 50 // Radius of each cluster when clustering points (defaults to 50)
});```

1 Ответ

0 голосов
/ 13 июня 2019

Я нашел решение,

Мне пришлось создать объект geoJson из моих пользователей, например так:

  const geoJsonMarkers = users.map( (place, i ) => {
    const [placeLng, placeLat] = place.location.coordinates;
    const position = { lat: placeLat, lng: placeLng };
    return {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [position.lng, position.lat]
      },
      "properties": {
        "name": place.name
      }
    }
  })
  const usersArray = {
    "features": geoJsonMarkers
  }

А затем передать его в свойство данных источника следующим образом:

  map.on('load', function() {
    // Add a new source from our GeoJSON data and set the
    // 'cluster' option to true. GL-JS will add the point_count property to your source data.
    map.addSource("users", {
    type: "geojson",
    // Point to GeoJSON data. This example visualizes all M1.0+ earthquakes
    // from 12/22/15 to 1/21/16 as logged by USGS' Earthquake hazards program.
    data: usersArray,
    cluster: true,
    clusterMaxZoom: 14, // Max zoom to cluster points on
    clusterRadius: 50 // Radius of each cluster when clustering points (defaults to 50)
    });
     ...

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

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