Merge pull request #8287 from vvlladd28/feaure/map/here/version-3
API version 3 support has been added to HERE map widget
This commit is contained in:
commit
f8a1615582
File diff suppressed because one or more lines are too long
@ -133,16 +133,20 @@ export const hereMapProviderTranslationMap = new Map<HereMapProvider, string>(
|
|||||||
export interface HereMapProviderSettings {
|
export interface HereMapProviderSettings {
|
||||||
mapProviderHere: HereMapProvider;
|
mapProviderHere: HereMapProvider;
|
||||||
credentials: {
|
credentials: {
|
||||||
|
useV3: boolean;
|
||||||
app_id: string;
|
app_id: string;
|
||||||
app_code: string;
|
app_code: string;
|
||||||
|
apiKey: string;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export const defaultHereMapProviderSettings: HereMapProviderSettings = {
|
export const defaultHereMapProviderSettings: HereMapProviderSettings = {
|
||||||
mapProviderHere: HereMapProvider.hereNormalDay,
|
mapProviderHere: HereMapProvider.hereNormalDay,
|
||||||
credentials: {
|
credentials: {
|
||||||
|
useV3: true,
|
||||||
app_id: 'AhM6TzD9ThyK78CT3ptx',
|
app_id: 'AhM6TzD9ThyK78CT3ptx',
|
||||||
app_code: 'p6NPiITB3Vv0GMUFnkLOOg'
|
app_code: 'p6NPiITB3Vv0GMUFnkLOOg',
|
||||||
|
apiKey: 'kVXykxAfZ6LS4EbCTO02soFVfjA7HoBzNVVH9u7nzoE'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -18,6 +18,7 @@ import L from 'leaflet';
|
|||||||
import LeafletMap from '../leaflet-map';
|
import LeafletMap from '../leaflet-map';
|
||||||
import { DEFAULT_ZOOM_LEVEL, WidgetUnitedMapSettings } from '../map-models';
|
import { DEFAULT_ZOOM_LEVEL, WidgetUnitedMapSettings } from '../map-models';
|
||||||
import { WidgetContext } from '@home/models/widget-component.models';
|
import { WidgetContext } from '@home/models/widget-component.models';
|
||||||
|
import { isDefinedAndNotNull } from '@core/utils';
|
||||||
|
|
||||||
export class HEREMap extends LeafletMap {
|
export class HEREMap extends LeafletMap {
|
||||||
constructor(ctx: WidgetContext, $container, options: WidgetUnitedMapSettings) {
|
constructor(ctx: WidgetContext, $container, options: WidgetUnitedMapSettings) {
|
||||||
@ -26,7 +27,11 @@ export class HEREMap extends LeafletMap {
|
|||||||
doubleClickZoom: !this.options.disableDoubleClickZooming,
|
doubleClickZoom: !this.options.disableDoubleClickZooming,
|
||||||
zoomControl: !this.options.disableZoomControl
|
zoomControl: !this.options.disableZoomControl
|
||||||
}).setView(options?.parsedDefaultCenterPosition, options?.defaultZoomLevel || DEFAULT_ZOOM_LEVEL);
|
}).setView(options?.parsedDefaultCenterPosition, options?.defaultZoomLevel || DEFAULT_ZOOM_LEVEL);
|
||||||
const tileLayer = (L.tileLayer as any).provider(options.mapProviderHere || 'HERE.normalDay', options.credentials);
|
let provider = options.mapProviderHere || 'HERE.normalDay';
|
||||||
|
if (options.credentials.useV3 && isDefinedAndNotNull(options.credentials.apiKey)) {
|
||||||
|
provider = options.mapProviderHere?.replace('HERE', 'HEREv3') || 'HEREv3.normalDay';
|
||||||
|
}
|
||||||
|
const tileLayer = (L.tileLayer as any).provider(provider, options.credentials);
|
||||||
tileLayer.addTo(map);
|
tileLayer.addTo(map);
|
||||||
super.setMap(map);
|
super.setMap(map);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,11 @@
|
|||||||
<section class="tb-widget-settings" formGroupName="credentials">
|
<section class="tb-widget-settings" formGroupName="credentials">
|
||||||
<fieldset class="fields-group">
|
<fieldset class="fields-group">
|
||||||
<legend class="group-title" translate>widgets.maps.credentials</legend>
|
<legend class="group-title" translate>widgets.maps.credentials</legend>
|
||||||
|
<mat-slide-toggle formControlName="useV3" style="margin-bottom: 16px;">
|
||||||
|
{{ 'widgets.maps.here-use-new-version-api-3' | translate }}
|
||||||
|
</mat-slide-toggle>
|
||||||
|
<div *ngIf="!providerSettingsFormGroup.get('credentials.useV3').value; else apiKey" fxLayout="row" fxLayoutGap="8px"
|
||||||
|
fxLayout.xs="column" fxLayoutGap.xs="0">
|
||||||
<mat-form-field fxFlex class="mat-block">
|
<mat-form-field fxFlex class="mat-block">
|
||||||
<mat-label translate>widgets.maps.here-app-id</mat-label>
|
<mat-label translate>widgets.maps.here-app-id</mat-label>
|
||||||
<input required matInput formControlName="app_id">
|
<input required matInput formControlName="app_id">
|
||||||
@ -35,6 +40,13 @@
|
|||||||
<mat-label translate>widgets.maps.here-app-code</mat-label>
|
<mat-label translate>widgets.maps.here-app-code</mat-label>
|
||||||
<input required matInput formControlName="app_code">
|
<input required matInput formControlName="app_code">
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
|
</div>
|
||||||
|
<ng-template #apiKey>
|
||||||
|
<mat-form-field fxFlex class="mat-block">
|
||||||
|
<mat-label translate>widgets.maps.here-api-key</mat-label>
|
||||||
|
<input required matInput formControlName="apiKey">
|
||||||
|
</mat-form-field>
|
||||||
|
</ng-template>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@ -17,9 +17,9 @@
|
|||||||
import { Component, forwardRef, Input, OnInit } from '@angular/core';
|
import { Component, forwardRef, Input, OnInit } from '@angular/core';
|
||||||
import {
|
import {
|
||||||
ControlValueAccessor,
|
ControlValueAccessor,
|
||||||
UntypedFormBuilder,
|
FormBuilder,
|
||||||
UntypedFormControl,
|
FormControl,
|
||||||
UntypedFormGroup,
|
FormGroup,
|
||||||
NG_VALIDATORS,
|
NG_VALIDATORS,
|
||||||
NG_VALUE_ACCESSOR,
|
NG_VALUE_ACCESSOR,
|
||||||
Validator,
|
Validator,
|
||||||
@ -34,6 +34,7 @@ import {
|
|||||||
HereMapProviderSettings,
|
HereMapProviderSettings,
|
||||||
hereMapProviderTranslationMap
|
hereMapProviderTranslationMap
|
||||||
} from '@home/components/widget/lib/maps/map-models';
|
} from '@home/components/widget/lib/maps/map-models';
|
||||||
|
import { isDefinedAndNotNull } from '@core/utils';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'tb-here-map-provider-settings',
|
selector: 'tb-here-map-provider-settings',
|
||||||
@ -61,7 +62,7 @@ export class HereMapProviderSettingsComponent extends PageComponent implements O
|
|||||||
|
|
||||||
private propagateChange = null;
|
private propagateChange = null;
|
||||||
|
|
||||||
public providerSettingsFormGroup: UntypedFormGroup;
|
public providerSettingsFormGroup: FormGroup;
|
||||||
|
|
||||||
hereMapProviders = Object.values(HereMapProvider);
|
hereMapProviders = Object.values(HereMapProvider);
|
||||||
|
|
||||||
@ -69,7 +70,7 @@ export class HereMapProviderSettingsComponent extends PageComponent implements O
|
|||||||
|
|
||||||
constructor(protected store: Store<AppState>,
|
constructor(protected store: Store<AppState>,
|
||||||
private translate: TranslateService,
|
private translate: TranslateService,
|
||||||
private fb: UntypedFormBuilder) {
|
private fb: FormBuilder) {
|
||||||
super(store);
|
super(store);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,10 +78,23 @@ export class HereMapProviderSettingsComponent extends PageComponent implements O
|
|||||||
this.providerSettingsFormGroup = this.fb.group({
|
this.providerSettingsFormGroup = this.fb.group({
|
||||||
mapProviderHere: [null, [Validators.required]],
|
mapProviderHere: [null, [Validators.required]],
|
||||||
credentials: this.fb.group({
|
credentials: this.fb.group({
|
||||||
|
useV3: [true],
|
||||||
app_id: [null, [Validators.required]],
|
app_id: [null, [Validators.required]],
|
||||||
app_code: [null, [Validators.required]]
|
app_code: [null, [Validators.required]],
|
||||||
|
apiKey: [null, [Validators.required]]
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
this.providerSettingsFormGroup.get('credentials.useV3').valueChanges.subscribe(value => {
|
||||||
|
if (value) {
|
||||||
|
this.providerSettingsFormGroup.get('credentials.apiKey').enable({emitEvent: false});
|
||||||
|
this.providerSettingsFormGroup.get('credentials.app_id').disable({emitEvent: false});
|
||||||
|
this.providerSettingsFormGroup.get('credentials.app_code').disable({emitEvent: false});
|
||||||
|
} else {
|
||||||
|
this.providerSettingsFormGroup.get('credentials.apiKey').disable({emitEvent: false});
|
||||||
|
this.providerSettingsFormGroup.get('credentials.app_id').enable({emitEvent: false});
|
||||||
|
this.providerSettingsFormGroup.get('credentials.app_code').enable({emitEvent: false});
|
||||||
|
}
|
||||||
|
});
|
||||||
this.providerSettingsFormGroup.valueChanges.subscribe(() => {
|
this.providerSettingsFormGroup.valueChanges.subscribe(() => {
|
||||||
this.updateModel();
|
this.updateModel();
|
||||||
});
|
});
|
||||||
@ -99,17 +113,24 @@ export class HereMapProviderSettingsComponent extends PageComponent implements O
|
|||||||
this.providerSettingsFormGroup.disable({emitEvent: false});
|
this.providerSettingsFormGroup.disable({emitEvent: false});
|
||||||
} else {
|
} else {
|
||||||
this.providerSettingsFormGroup.enable({emitEvent: false});
|
this.providerSettingsFormGroup.enable({emitEvent: false});
|
||||||
|
this.providerSettingsFormGroup.get('credentials.useV3').updateValueAndValidity({onlySelf: true});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
writeValue(value: HereMapProviderSettings): void {
|
writeValue(value: HereMapProviderSettings): void {
|
||||||
|
if (!isDefinedAndNotNull(value.credentials.useV3)) {
|
||||||
|
if (isDefinedAndNotNull(value.credentials.app_id) && isDefinedAndNotNull(value.credentials.app_code)) {
|
||||||
|
value.credentials.useV3 = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
this.modelValue = value;
|
this.modelValue = value;
|
||||||
this.providerSettingsFormGroup.patchValue(
|
this.providerSettingsFormGroup.patchValue(
|
||||||
value, {emitEvent: false}
|
value, {emitEvent: false}
|
||||||
);
|
);
|
||||||
|
this.providerSettingsFormGroup.get('credentials.useV3').updateValueAndValidity({onlySelf: true});
|
||||||
}
|
}
|
||||||
|
|
||||||
public validate(c: UntypedFormControl) {
|
public validate(c: FormControl) {
|
||||||
return this.providerSettingsFormGroup.valid ? null : {
|
return this.providerSettingsFormGroup.valid ? null : {
|
||||||
hereMapProviderSettings: {
|
hereMapProviderSettings: {
|
||||||
valid: false,
|
valid: false,
|
||||||
|
|||||||
@ -4818,6 +4818,8 @@
|
|||||||
"credentials": "Credentials",
|
"credentials": "Credentials",
|
||||||
"here-app-id": "HERE app id",
|
"here-app-id": "HERE app id",
|
||||||
"here-app-code": "HERE app code",
|
"here-app-code": "HERE app code",
|
||||||
|
"here-api-key": "HERE API key",
|
||||||
|
"here-use-new-version-api-3": "Use API version 3",
|
||||||
"tencent-maps-api-key": "Tencent Maps API Key",
|
"tencent-maps-api-key": "Tencent Maps API Key",
|
||||||
"tencent-map-type-roadmap": "Roadmap",
|
"tencent-map-type-roadmap": "Roadmap",
|
||||||
"tencent-map-type-satelite": "Satellite",
|
"tencent-map-type-satelite": "Satellite",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user