Ответы пользователя по тегу Mapbox
  • Как указать позицию картинки по вертикали в Mapbox GL?

    @EmelyanovKonstantin
    GIS архитектура, аналитика, разработка
    Такой возможности нет.
    Ответ написан
    Комментировать
  • Как на карте mapbox gl сделать стиль карты как стандартый на openstreetmap?

    @EmelyanovKonstantin
    GIS архитектура, аналитика, разработка
    Поменять стиль. Вот так:
    <html>
    <head>
      <meta charset='utf-8' />
      <title>Locate the user</title>
      <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
      <script src='https://api.tiles.mapbox.com/mapbox-gl-js/v1.2.1/mapbox-gl.js'></script>
      <link href='https://api.tiles.mapbox.com/mapbox-gl-js/v1.2.1/mapbox-gl.css' rel='stylesheet' />
      <style>
        body { margin:0; padding:0; }
        #map { position:absolute; top:0; bottom:0; width:100%; }
      </style>
    </head>
    <body>
    
    <div id='map'></div>
    <script>
      mapboxgl.accessToken = 'pk.eyJ1IjoicnRrbWFwIiwiYSI6ImNqejJvbjloczA0dGczZG1uamRxNHNrM24ifQ.oJBnsuU9ILbPW7Ehz2cyPA';
      var map = new mapboxgl.Map({
        container: 'map', // container id
        style: 'https://maputnik.github.io/osm-liberty/style.json',
        center: [-96, 37.8], // starting position
        zoom: 3 // starting zoom
      });
    
      // Add geolocate control to the map.
      map.addControl(new mapboxgl.GeolocateControl({
        positionOptions: {
          enableHighAccuracy: true
        },
        trackUserLocation: true
      }));
    </script>
    
    </body>
    </html>
    Ответ написан
    Комментировать
  • Как отобразить в Mapbox вместо маркеров иображения?

    @EmelyanovKonstantin
    GIS архитектура, аналитика, разработка
    Немного не понятно что в GeoJson. И как в GeoJson может быть изображение(может ссылка на него). Предположим там всё-таки есть какой-то тэг, позволяющий сделать сопоставление точки и соответствующей ей картинке.
    Есть 2 пути:
    1. Как предусмотрено это в Mapbox: Вы загружайте ваш GeoJson на сервера MapBox и с помощью стилей описывайте эти точки. Картинки добавляются в виде спрайтов.
    В спецификации к стилям для каждой точки можно указать соответствующую ей картинку
    "icon-image": "{icon}"

    "icon-size": "{size}"

    "icon-rotation": "{rotation}"

    и другие свойства.
    Это делается в Mapdox Studio. Вместо Circle используется Symbol. Делается фильтр по данным и назначатся изображение. Как пример:
    {
    "filter": [
    "all",
    [
    "==",
    "$type",
    "Point"
    ],
    [
    "has",
    "name"
    ],
    [
    "==",
    "class",
    "railway"
    ],
    [
    "==",
    "subclass",
    "station"
    ]
    ],
    "id": "poi-railway",
    "layout": {
    "icon-image": "{class}_11",
    "text-field": "{name}",
    "text-font": [
    "Noto Sans Regular"
    ],
    "text-size": 12
    },
    "source": "source",
    "source-layer": "poi",
    "type": "symbol"
    }

    Это в концепции Mapbox. В принципе, это может делать картограф вообще без кода. А вы просто цепляйте готовую карту на клиенте.
    2.Второй вариант. Делать все те же действия только на стороне клиента JS. Загружать картинки и Json с бэкенда или сторонних сервисов.
    Сопоставить типу точки ссылку на картинку в спрайтах.
    И сформировать либо такой же фрагмент стиля, если вы используйте фреймворк с поддержкой стилей MapBox, либо рисовать эти изображения своими средствами, если фреймворк не поддерживает спецификацию MapBox.
    У вас Mapbox GL JS поэтому просто
    map.addLayer({ фрагмент стиля});
    Ответ написан
    Комментировать