我正在使用mapbox,它基于外部geojson
文件绘制邮政编码轮廓,如下所示:
import { Component, OnInit } from '@angular/core';
import * as mapboxgl from 'mapbox-gl';
@Component({
selector: 'app-mapbox',
templateUrl: './mapbox.component.html',
styleUrls: ['./mapbox.component.css']
})
export class MapboxComponent implements OnInit {
ngOnInit() {
mapboxgl.accessToken = 'api-key';
let map = new mapboxgl.Map({
container: 'map',
style: 'styles',
zoom: 5,
center: [-80.118, 25.897]
});
map.addControl(new mapboxgl.NavigationControl());
map.on('load', function () {
map.addSource("route", {
"type": "geojson",
"data": "./assets/shapeGeoJson.json"
});
map.addLayer({
"id": "route",
"type": "line",
"source": "route",
"paint": {
'line-color': "gray"
}
});
});
}
}
在这里,能够加载geojson
,我将在其中获取邮政编码的轮廓。
现在,我想调用一个api,其中会获得density
的邮政编码,并且我需要根据density
值来绘制邮政编码层。
有人可以告诉我如何实现吗?
有什么帮助吗?
答案 0 :(得分:2)
您可以使用Mapbox的addSource。只需在代码中添加这些行
map.addSource('zipDensity', {
type: 'geojson',
data: {
...geoJsonObj // this can be your data from API containing density prop
}
});
map.addLayer({
'id': 'zipDensity',
'source': 'zipDensity',
'type': 'fill',
'paint': {
'fill-color': {
property: 'density', // this will be your density property form you geojson
stops: [
[1000, '#CECECE'],
[100000, '#DEDEDE'],
]
},
'fill-opacity': 1
}
});
在addLayer
中,您可以添加光阑,您可以在其中添加密度值和颜色代码。您可以探索addLayer
希望它对您有帮助。