1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
/**
* ============LICENSE_START========================================================================
* ONAP : ccsdk feature sdnr wt odlux
* =================================================================================================
* Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. All rights reserved.
* =================================================================================================
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
* ============LICENSE_END==========================================================================
*/
import * as mapboxgl from 'mapbox-gl';
import apartment from '../../icons/apartment.png';
import datacenter from '../../icons/datacenter.png';
import factory from '../../icons/factory.png';
import lamp from '../../icons/lamp.png';
import datacenterred from '../../icons/datacenterred.png';
import factoryred from '../../icons/factoryred.png';
import lampred from '../../icons/lampred.png';
type ImagesLoaded = (allImagesLoaded: boolean) => void;
type MapImages = {name: string, url: string}
export const Images : MapImages[] = [
{name: 'data-center', url: datacenter},
{name: 'house', url: apartment},
{name: 'factory', url: factory},
{name: 'lamp', url: lamp},
{name: 'data-center-red', url: datacenterred},
{name: 'factory-red', url: factoryred},
{name: 'lamp-red', url: lampred},
] ;
export const addImages = (map: mapboxgl.Map, callback?: ImagesLoaded) =>{
Images.forEach(image => {
map.loadImage(
image.url,
function (error: any, img: any) {
if (error) throw error;
map.addImage(image.name, img);
allImagesLoaded(map, callback);
});
});
}
const allImagesLoaded = (map: mapboxgl.Map, callback?: ImagesLoaded) =>{
const loadedImages = Images.map(image =>{
return map.hasImage(image.name);
});
const allImagesLoaded = loadedImages.filter(el => !el);
if(allImagesLoaded.length===0){
callback && callback(true);
}
}
|