[javascript] Mapbox 지도에 다양한 스타일 적용하기

Mapbox는 개발자들이 자체적으로 맞춤형 스타일을 통해 지도를 디자인하고 제어할 수 있는 강력한 도구입니다. 이 문서에서는 Mapbox 지도에 다양한 스타일을 적용하는 방법에 대해 알아보겠습니다.

Mapbox 스타일

Mapbox 스타일은 지도의 디자인과 외관을 정의하는 JSON 형식의 문서입니다. 이 문서에서는 지도의 스타일, 레이어, 건물, 도로 등 모든 요소에 대한 규정을 할 수 있습니다.

스타일 설정하기

첫째로, Mapbox 지도를 만드는데 사용할 스타일을 정의해야 합니다. 스타일은 Mapbox Studio에서 생성하거나, 직접 JSON 형식으로 작성할 수 있습니다. 예를 들어, 다음과 같은 스타일을 적용할 수 있습니다:

const mapStyle = {
  version: 8,
  sources: {
    'mapbox-streets': {
      type: 'vector',
      url: 'mapbox://mapbox.mapbox-streets-v8'
    }
  },
  layers: [
    {
      id: 'background',
      type: 'background',
      paint: {
        'background-color': '#f8f8f8'
      }
    },
    {
      id: 'road',
      source: 'mapbox-streets',
      'source-layer': 'road',
      type: 'line',
      paint: {
        'line-color': '#888888',
        'line-width': 2
      }
    }
  ]
};

지도에 스타일 적용하기

스타일을 작성한 후, Mapbox SDK를 사용하여 지도에 스타일을 적용할 수 있습니다. 예를 들어, JavaScript에서는 다음과 같이 스타일을 지도에 적용할 수 있습니다:

mapboxgl.accessToken = 'YOUR_ACCESS_TOKEN';
const map = new mapboxgl.Map({
  container: 'map',
  style: mapStyle,
  center: [longitude, latitude],
  zoom: 12
});

위 예시에서 YOUR_ACCESS_TOKEN을 자신의 Mapbox 액세스 토큰으로 바꿔야 합니다. 또한 container는 스타일을 적용할 HTML 요소의 ID를 가리킵니다. centerzoom은 지도의 초기 위치와 확대/축소 수준을 설정합니다.

스타일 커스터마이징

Mapbox 스타일은 다양한 방법으로 커스터마이징할 수 있습니다. 예를 들어, 색상, 두께, 점선 등의 속성을 조정하여 스타일을 바꿀 수 있습니다.

레이어 스타일 조정

스타일 내의 개별 레이어에 대한 스타일을 수정하려면 해당 레이어의 ID를 찾아야 합니다. 예를 들어, 위에서 정의한 road 레이어의 스타일을 변경하려면 다음과 같이 할 수 있습니다:

map.on('style.load', function() {
  const roadLayer = map.getLayer('road');
  map.setPaintProperty(roadLayer, 'line-color', '#ff0000');
});

위 예시에서는 roadLayer를 사용하여 레이어의 ID를 가져오고, map.setPaintProperty()를 사용하여 line-color 속성을 변경합니다.

맞춤형 지도 제작

Mapbox 스타일을 사용하여 완전히 맞춤화된 지도를 만들 수도 있습니다. 다양한 속성과 스타일 옵션을 조정하여 개인적인 지도 스타일을 만들어보세요. 더 많은 정보를 원한다면, Mapbox 스타일 문서를 참고하세요.

결론

Mapbox를 사용하면 지도에 다양한 스타일을 적용할 수 있습니다. JSON 형식의 스타일 문서를 작성하고, Mapbox SDK를 사용하여 스타일을 지도에 적용하는 방법을 배웠습니다. 스타일을 수정하고 맞춤형 지도를 제작하는 방법을 익혀보세요.