2017-09-21 8 views
2

지도에 여러 다각형을 만들기 위해지도 상자 예제를 사용하고 있으며 각각에 대해 팝업 이벤트가 있습니다. 내 문제는 geojson 속성에 따라 다각형의 채우기 색을 다르게 설정해야한다는 것입니다.지도 상자로 geojson을 기반으로 폴리곤 채우기 색상을 정의합니다.

This이 제 예제입니다. 나는 다음과 같은 자바 스크립트 코드를 사용하고 있습니다 :

"type": "Feature", 
"properties": { 
    "userone":"پیروزی", 
    "name":"North Dafkota", 
    "featureclass":"Admin-1 scale rank", 
    "color":"red" 
} 

I : 여기

mapboxgl.accessToken = 'pk.eyJ1IjoibWFoYW5tZWhydmFyeiIsImEiOiJ6SDdSWldRIn0.8zUNm01094D1aoSeHpWYqA'; 
var map = new mapboxgl.Map({ 
    container: 'map', 
    style: 'mapbox://styles/mapbox/streets-v9', 
    center: [51.40545845031738, 
    35.75069181054449], 
    zoom: 10 

}); 

map.on('load', function (e) { 
    // Add a layer showing the state polygons. 
    map.addLayer({ 
     'id': 'states-layer', 
     'type': 'fill', 
     'source': { 
      'type': 'geojson', 
      'data': 'geojson.js' 
     }, 
     'paint': { 
      'fill-color': 'rgba(200, 100, 240, 0.4)', 
      'fill-outline-color': 'rgba(200, 100, 240, 1)' 
     } 
    }); 

    // When a click event occurs on a feature in the states layer, open a popup at the 
    // location of the click, with description HTML from its properties. 
    map.on('click', 'states-layer', function (e) { 
     new mapboxgl.Popup() 
      .setLngLat(e.lngLat) 
      //.setHTML(e.features[0].properties.name) 
      .setHTML("<h1>"+e.features[0].properties.userone+"</h1>"+e.features[0].properties.name) 

      .addTo(map); 
    }); 

    // Change the cursor to a pointer when the mouse is over the states layer. 
    map.on('mouseenter', 'states-layer', function() { 
     map.getCanvas().style.cursor = 'pointer'; 
    }); 

    // Change it back to a pointer when it leaves. 
    map.on('mouseleave', 'states-layer', function() { 
     map.getCanvas().style.cursor = ''; 
    }); 
}); 

을 내가 색상의 키가 내 모든 geojson 파일에 같은

'paint': { 
    'fill-color': 'rgba(200, 100, 240, 0.4)', 
    'fill-outline-color': 'rgba(200, 100, 240, 1)' 
} 

색상을로드 그것을 사용하여 폴리곤 채우기 색상을 정의하고 싶습니다.

답변

2

geojson 기능 속성에서 정의한 색상 만 사용하려는 경우. 그리고이 같은 층의 ID 속성을 사용할 수

map.addLayer({ 
 
    'id': 'states-layer', 
 
    'type': 'fill', 
 
    'source': { 
 
     'type': 'geojson', 
 
     'data': 'geojson.js' 
 
    }, 
 
    'paint': { 
 
     'fill-color': { 
 
      type: 'identity', 
 
      property: 'color', 
 
     }, 
 
     'fill-outline-color': 'rgba(200, 100, 240, 1)' 
 
    } 
 
});

또한 참조 : https://www.mapbox.com/mapbox-gl-js/style-spec/#function-type

그리고 : https://www.mapbox.com/mapbox-gl-js/style-spec/#types-color