mapbox-gl中精靈圖的使用
mapbox-gl使用官方的樣式配置時(shí),需要申請(qǐng)token才能夠進(jìn)行使用,同時(shí),mapbox-gl也是開(kāi)源的,支持離線部署,自己配置樣式即可。
除去底圖配置,樣式配置中有兩個(gè)屬性:sprite和glyphs,glyphs是字體的網(wǎng)絡(luò)路徑配置,假如地圖場(chǎng)景中有帶文字的地方,沒(méi)有這個(gè)配置,文字是不會(huì)顯示出來(lái)的;sprite就是精靈圖的配置,這里邊配置了一些預(yù)置的圖標(biāo)。
CSS精靈是將一個(gè)網(wǎng)頁(yè)中涉及到的所有零星背景圖像都集中到一張大圖中去,將大圖應(yīng)用于網(wǎng)頁(yè),根據(jù)圖標(biāo)的位置和大小,定位顯示圖標(biāo),當(dāng)用戶(hù)訪問(wèn)該頁(yè)面時(shí),只需向服務(wù)發(fā)送一次請(qǐng)求即可請(qǐng)求到批量的圖標(biāo),而不用多次請(qǐng)求單個(gè)圖標(biāo),減少了網(wǎng)絡(luò)的請(qǐng)求量,雖然需要將圖標(biāo)編輯在一張網(wǎng)頁(yè)上,但是現(xiàn)在各種工具也多了,工作量也可以控制了。
mapbox-gl中的精靈圖配置包括了2個(gè)文件,一個(gè)是圖標(biāo)的png圖片,另一個(gè)是每個(gè)圖標(biāo)名稱(chēng)、位置和尺寸的json文件。
mapbox-gl官網(wǎng)的圖片:

同步的json內(nèi)容信息:

在開(kāi)發(fā)中,在添加注記圖層時(shí),根據(jù)json文件中的圖標(biāo)名稱(chēng),就能夠在mapbox-gl加載對(duì)應(yīng)的圖標(biāo)了。
?map.addLayer({
? ? ? ? 'id': 'points',
? ? ? ? 'type': 'symbol',
? ? ? ?'source': 'points',
? ? ? ?'layout': {?
? ? ? ?'icon-image': 'convenience-15',?
? ? ? ? }
? ?});
在實(shí)際的項(xiàng)目中,可以將自帶的精靈圖替換掉,將項(xiàng)目中用到的圖標(biāo)做成集合,在json文件中,標(biāo)識(shí)圖標(biāo)的尺寸和位置,就能夠進(jìn)行調(diào)用了。
單獨(dú)的圖標(biāo),mapbox-gl有加載的方式,需要先加載圖標(biāo),給圖標(biāo)賦予名稱(chēng),然后才能夠進(jìn)行使用。
map.loadImage('圖標(biāo)地址', function(error, image) {
?if (error) throw error;
?map.addImage('kitten', image);
});
有多個(gè)圖標(biāo)的情況,加載過(guò)程就需要執(zhí)行很多次了,而且要等圖標(biāo)加載完成,才能夠進(jìn)行使用,所以,使用mapbox-gl自帶的精靈圖方式,還是很方便的。