2017-09-21 11 views
2

地図上に複数のポリゴンを作成するためにマップボックスの例を使用していますが、それぞれにポップアップイベントがあります。私の問題は、各ポリゴンの塗りつぶし色をgeojsonのプロパティに基づいて別々に設定する必要があることです。geojsonに基づくポリゴンの塗りつぶし色をマップボックスで定義します

Thisが私の例です。 は、私はjavascriptのコード次を使用しています:

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)' 
} 

色をロード:

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

Iそれを使用してポリゴンの塗りつぶし色を定義します。

答えて

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

関連する問題