map provider supports TianDiTu

This commit is contained in:
MaysWind
2024-07-21 19:10:58 +08:00
parent daf73dc964
commit aae23c285e
11 changed files with 164 additions and 46 deletions
+5
View File
@@ -163,9 +163,14 @@ func startWebServer(c *cli.Context) error {
config.MapProvider == settings.CyclOSMMapProvider || config.MapProvider == settings.CyclOSMMapProvider ||
config.MapProvider == settings.CartoDBMapProvider || config.MapProvider == settings.CartoDBMapProvider ||
config.MapProvider == settings.TomTomMapProvider || config.MapProvider == settings.TomTomMapProvider ||
config.MapProvider == settings.TianDiTuProvider ||
config.MapProvider == settings.CustomProvider { config.MapProvider == settings.CustomProvider {
proxyRoute.GET("/map/tile/:zoomLevel/:coordinateX/:fileName", bindProxy(api.MapImages.MapTileImageProxyHandler)) proxyRoute.GET("/map/tile/:zoomLevel/:coordinateX/:fileName", bindProxy(api.MapImages.MapTileImageProxyHandler))
} }
if config.MapProvider == settings.TianDiTuProvider {
proxyRoute.GET("/map/annotation/:zoomLevel/:coordinateX/:fileName", bindProxy(api.MapImages.MapAnnotationImageProxyHandler))
}
} }
} }
+5 -1
View File
@@ -170,6 +170,7 @@ enable_export = true
# "cyclosm": https://www.cyclosm.org # "cyclosm": https://www.cyclosm.org
# "cartodb": https://carto.com/basemaps # "cartodb": https://carto.com/basemaps
# "tomtom": https://www.tomtom.com # "tomtom": https://www.tomtom.com
# "tianditu": https://www.tianditu.gov.cn
# "googlemap": https://map.google.com # "googlemap": https://map.google.com
# "baidumap": https://map.baidu.com # "baidumap": https://map.baidu.com
# "amap": https://amap.com # "amap": https://amap.com
@@ -177,7 +178,7 @@ enable_export = true
# Leave blank if you want to disable map # Leave blank if you want to disable map
map_provider = openstreetmap map_provider = openstreetmap
# Set to true to use the ezbookkeeping server to proxy map data requests, for "openstreetmap", "openstreetmap_humanitarian", "opentopomap", "opnvkarte", "cyclosm", "cartodb", "tomtom" or "custom" # Set to true to use the ezbookkeeping server to proxy map data requests, for "openstreetmap", "openstreetmap_humanitarian", "opentopomap", "opnvkarte", "cyclosm", "cartodb", "tomtom", "tianditu" or "custom"
map_data_fetch_proxy = false map_data_fetch_proxy = false
# Proxy to request original map data when map_data_fetch_proxy is set to true, supports "system" (use system proxy), "none" (do not use proxy), or proxy URL which starts with "http://", "https://" or "socks5://", default is "system" # Proxy to request original map data when map_data_fetch_proxy is set to true, supports "system" (use system proxy), "none" (do not use proxy), or proxy URL which starts with "http://", "https://" or "socks5://", default is "system"
@@ -186,6 +187,9 @@ proxy = system
# For "tomtom" only, TomTom map API key, please visit https://developer.tomtom.com/how-to-get-tomtom-api-key for more information # For "tomtom" only, TomTom map API key, please visit https://developer.tomtom.com/how-to-get-tomtom-api-key for more information
tomtom_map_api_key = tomtom_map_api_key =
# For "tianditu" only, TianDiTu map application key, please visit https://console.tianditu.gov.cn/api/register for more information
tianditu_map_app_key =
# For "googlemap" only, Google map JavaScript API key, please visit https://developers.google.com/maps/get-started for more information # For "googlemap" only, Google map JavaScript API key, please visit https://developers.google.com/maps/get-started for more information
google_map_api_key = google_map_api_key =
+57 -29
View File
@@ -12,13 +12,15 @@ import (
"github.com/mayswind/ezbookkeeping/pkg/utils" "github.com/mayswind/ezbookkeeping/pkg/utils"
) )
const openStreetMapTileImageUrlFormat = "https://tile.openstreetmap.org/{z}/{x}/{y}.png" // https://tile.openstreetmap.org/{z}/{x}/{y}.png const openStreetMapTileImageUrlFormat = "https://tile.openstreetmap.org/{z}/{x}/{y}.png" // https://tile.openstreetmap.org/{z}/{x}/{y}.png
const openStreetMapHumanitarianStyleTileImageUrlFormat = "https://a.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png" // https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png const openStreetMapHumanitarianStyleTileImageUrlFormat = "https://a.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png" // https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png
const openTopoMapTileImageUrlFormat = "https://tile.opentopomap.org/{z}/{x}/{y}.png" // https://tile.opentopomap.org/{z}/{x}/{y}.png const openTopoMapTileImageUrlFormat = "https://tile.opentopomap.org/{z}/{x}/{y}.png" // https://tile.opentopomap.org/{z}/{x}/{y}.png
const opnvKarteMapTileImageUrlFormat = "https://tileserver.memomaps.de/tilegen/{z}/{x}/{y}.png" // https://tileserver.memomaps.de/tilegen/{z}/{x}/{y}.png const opnvKarteMapTileImageUrlFormat = "https://tileserver.memomaps.de/tilegen/{z}/{x}/{y}.png" // https://tileserver.memomaps.de/tilegen/{z}/{x}/{y}.png
const cyclOSMMapTileImageUrlFormat = "https://a.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png" // https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png const cyclOSMMapTileImageUrlFormat = "https://a.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png" // https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png
const cartoDBMapTileImageUrlFormat = "https://a.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{scale}.png" // https://{s}.basemaps.cartocdn.com/{style}/{z}/{x}/{y}{scale}.png const cartoDBMapTileImageUrlFormat = "https://a.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{scale}.png" // https://{s}.basemaps.cartocdn.com/{style}/{z}/{x}/{y}{scale}.png
const tomtomMapTileImageUrlFormat = "https://api.tomtom.com/map/1/tile/basic/main/{z}/{x}/{y}.png" // https://api.tomtom.com/map/{versionNumber}/tile/{layer}/{style}/{z}/{x}/{y}.png?key={key}&language={language} const tomtomMapTileImageUrlFormat = "https://api.tomtom.com/map/1/tile/basic/main/{z}/{x}/{y}.png" // https://api.tomtom.com/map/{versionNumber}/tile/{layer}/{style}/{z}/{x}/{y}.png?key={key}&language={language}
const tianDiTuMapTileImageUrlFormat = "https://t0.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}" // https://t{s}.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk={key}
const tianDiTuMapAnnotationUrlFormat = "https://t0.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}" // https://t{s}.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk={key}
// MapImageProxy represents map image proxy // MapImageProxy represents map image proxy
type MapImageProxy struct { type MapImageProxy struct {
@@ -31,6 +33,50 @@ var (
// MapTileImageProxyHandler returns map tile image // MapTileImageProxyHandler returns map tile image
func (p *MapImageProxy) MapTileImageProxyHandler(c *core.Context) (*httputil.ReverseProxy, *errs.Error) { func (p *MapImageProxy) MapTileImageProxyHandler(c *core.Context) (*httputil.ReverseProxy, *errs.Error) {
return p.mapImageProxyHandler(c, func(c *core.Context, mapProvider string) (string, *errs.Error) {
if mapProvider == settings.OpenStreetMapProvider {
return openStreetMapTileImageUrlFormat, nil
} else if mapProvider == settings.OpenStreetMapHumanitarianStyleProvider {
return openStreetMapHumanitarianStyleTileImageUrlFormat, nil
} else if mapProvider == settings.OpenTopoMapProvider {
return openTopoMapTileImageUrlFormat, nil
} else if mapProvider == settings.OPNVKarteMapProvider {
return opnvKarteMapTileImageUrlFormat, nil
} else if mapProvider == settings.CyclOSMMapProvider {
return cyclOSMMapTileImageUrlFormat, nil
} else if mapProvider == settings.CartoDBMapProvider {
return cartoDBMapTileImageUrlFormat, nil
} else if mapProvider == settings.TomTomMapProvider {
targetUrl := tomtomMapTileImageUrlFormat + "?key=" + settings.Container.Current.TomTomMapAPIKey
language := c.Query("language")
if language != "" {
targetUrl = targetUrl + "&language=" + language
}
return targetUrl, nil
} else if mapProvider == settings.TianDiTuProvider {
return tianDiTuMapTileImageUrlFormat + "&tk=" + settings.Container.Current.TianDiTuAPIKey, nil
} else if mapProvider == settings.CustomProvider {
return settings.Container.Current.CustomMapTileServerUrl, nil
}
return "", errs.ErrParameterInvalid
})
}
// MapAnnotationImageProxyHandler returns map annotation image
func (p *MapImageProxy) MapAnnotationImageProxyHandler(c *core.Context) (*httputil.ReverseProxy, *errs.Error) {
return p.mapImageProxyHandler(c, func(c *core.Context, mapProvider string) (string, *errs.Error) {
if mapProvider == settings.TianDiTuProvider {
return tianDiTuMapAnnotationUrlFormat + "&tk=" + settings.Container.Current.TianDiTuAPIKey, nil
}
return "", errs.ErrParameterInvalid
})
}
func (p *MapImageProxy) mapImageProxyHandler(c *core.Context, fn func(c *core.Context, mapProvider string) (string, *errs.Error)) (*httputil.ReverseProxy, *errs.Error) {
mapProvider := strings.Replace(c.Query("provider"), "-", "_", -1) mapProvider := strings.Replace(c.Query("provider"), "-", "_", -1)
targetUrl := "" targetUrl := ""
@@ -49,29 +95,11 @@ func (p *MapImageProxy) MapTileImageProxyHandler(c *core.Context) (*httputil.Rev
return nil, errs.ErrImageExtensionNotSupported return nil, errs.ErrImageExtensionNotSupported
} }
if mapProvider == settings.OpenStreetMapProvider { var err *errs.Error
targetUrl = openStreetMapTileImageUrlFormat targetUrl, err = fn(c, mapProvider)
} else if mapProvider == settings.OpenStreetMapHumanitarianStyleProvider {
targetUrl = openStreetMapHumanitarianStyleTileImageUrlFormat
} else if mapProvider == settings.OpenTopoMapProvider {
targetUrl = openTopoMapTileImageUrlFormat
} else if mapProvider == settings.OPNVKarteMapProvider {
targetUrl = opnvKarteMapTileImageUrlFormat
} else if mapProvider == settings.CyclOSMMapProvider {
targetUrl = cyclOSMMapTileImageUrlFormat
} else if mapProvider == settings.CartoDBMapProvider {
targetUrl = cartoDBMapTileImageUrlFormat
} else if mapProvider == settings.TomTomMapProvider {
targetUrl = tomtomMapTileImageUrlFormat + "?key=" + settings.Container.Current.TomTomMapAPIKey
language := c.Query("language")
if language != "" { if err != nil {
targetUrl = targetUrl + "&language=" + language return nil, err
}
} else if mapProvider == settings.CustomProvider {
targetUrl = settings.Container.Current.CustomMapTileServerUrl
} else {
return nil, errs.ErrParameterInvalid
} }
transport := http.DefaultTransport.(*http.Transport).Clone() transport := http.DefaultTransport.(*http.Transport).Clone()
@@ -31,6 +31,7 @@ func ServerSettingsCookie(config *settings.Config) core.MiddlewareHandlerFunc {
config.MapProvider == settings.CyclOSMMapProvider || config.MapProvider == settings.CyclOSMMapProvider ||
config.MapProvider == settings.CartoDBMapProvider || config.MapProvider == settings.CartoDBMapProvider ||
config.MapProvider == settings.TomTomMapProvider || config.MapProvider == settings.TomTomMapProvider ||
config.MapProvider == settings.TianDiTuProvider ||
config.MapProvider == settings.CustomProvider) { config.MapProvider == settings.CustomProvider) {
settingsArr = append(settingsArr, buildBooleanSetting("mp", config.EnableMapDataFetchProxy)) settingsArr = append(settingsArr, buildBooleanSetting("mp", config.EnableMapDataFetchProxy))
} }
@@ -47,6 +48,10 @@ func ServerSettingsCookie(config *settings.Config) core.MiddlewareHandlerFunc {
settingsArr = append(settingsArr, buildEncodedStringSetting("tmak", config.TomTomMapAPIKey)) settingsArr = append(settingsArr, buildEncodedStringSetting("tmak", config.TomTomMapAPIKey))
} }
if config.MapProvider == settings.TianDiTuProvider && config.TianDiTuAPIKey != "" && !config.EnableMapDataFetchProxy {
settingsArr = append(settingsArr, buildEncodedStringSetting("tdak", config.TianDiTuAPIKey))
}
if config.MapProvider == settings.GoogleMapProvider && config.GoogleMapAPIKey != "" { if config.MapProvider == settings.GoogleMapProvider && config.GoogleMapAPIKey != "" {
settingsArr = append(settingsArr, buildEncodedStringSetting("gmak", config.GoogleMapAPIKey)) settingsArr = append(settingsArr, buildEncodedStringSetting("gmak", config.GoogleMapAPIKey))
} }
+5
View File
@@ -81,6 +81,7 @@ const (
CyclOSMMapProvider string = "cyclosm" CyclOSMMapProvider string = "cyclosm"
CartoDBMapProvider string = "cartodb" CartoDBMapProvider string = "cartodb"
TomTomMapProvider string = "tomtom" TomTomMapProvider string = "tomtom"
TianDiTuProvider string = "tianditu"
GoogleMapProvider string = "googlemap" GoogleMapProvider string = "googlemap"
BaiduMapProvider string = "baidumap" BaiduMapProvider string = "baidumap"
AmapProvider string = "amap" AmapProvider string = "amap"
@@ -243,6 +244,7 @@ type Config struct {
EnableMapDataFetchProxy bool EnableMapDataFetchProxy bool
MapProxy string MapProxy string
TomTomMapAPIKey string TomTomMapAPIKey string
TianDiTuAPIKey string
GoogleMapAPIKey string GoogleMapAPIKey string
BaiduMapAK string BaiduMapAK string
AmapApplicationKey string AmapApplicationKey string
@@ -652,6 +654,8 @@ func loadMapConfiguration(config *Config, configFile *ini.File, sectionName stri
config.MapProvider = CartoDBMapProvider config.MapProvider = CartoDBMapProvider
} else if mapProvider == TomTomMapProvider { } else if mapProvider == TomTomMapProvider {
config.MapProvider = TomTomMapProvider config.MapProvider = TomTomMapProvider
} else if mapProvider == TianDiTuProvider {
config.MapProvider = TianDiTuProvider
} else if mapProvider == GoogleMapProvider { } else if mapProvider == GoogleMapProvider {
config.MapProvider = GoogleMapProvider config.MapProvider = GoogleMapProvider
} else if mapProvider == BaiduMapProvider { } else if mapProvider == BaiduMapProvider {
@@ -667,6 +671,7 @@ func loadMapConfiguration(config *Config, configFile *ini.File, sectionName stri
config.EnableMapDataFetchProxy = getConfigItemBoolValue(configFile, sectionName, "map_data_fetch_proxy", false) config.EnableMapDataFetchProxy = getConfigItemBoolValue(configFile, sectionName, "map_data_fetch_proxy", false)
config.MapProxy = getConfigItemStringValue(configFile, sectionName, "proxy", "system") config.MapProxy = getConfigItemStringValue(configFile, sectionName, "proxy", "system")
config.TomTomMapAPIKey = getConfigItemStringValue(configFile, sectionName, "tomtom_map_api_key") config.TomTomMapAPIKey = getConfigItemStringValue(configFile, sectionName, "tomtom_map_api_key")
config.TianDiTuAPIKey = getConfigItemStringValue(configFile, sectionName, "tianditu_map_app_key")
config.GoogleMapAPIKey = getConfigItemStringValue(configFile, sectionName, "google_map_api_key") config.GoogleMapAPIKey = getConfigItemStringValue(configFile, sectionName, "google_map_api_key")
config.BaiduMapAK = getConfigItemStringValue(configFile, sectionName, "baidu_map_ak") config.BaiduMapAK = getConfigItemStringValue(configFile, sectionName, "baidu_map_ak")
config.AmapApplicationKey = getConfigItemStringValue(configFile, sectionName, "amap_application_key") config.AmapApplicationKey = getConfigItemStringValue(configFile, sectionName, "amap_application_key")
+23
View File
@@ -71,6 +71,29 @@ const leafletTileSources = {
defaultZoomLevel: 14, defaultZoomLevel: 14,
website: 'https://tomtom.com', website: 'https://tomtom.com',
attribution : '<a href="https://tomtom.com" class="external" target="_blank">&copy; 1992 - 2023 TomTom.</a>' attribution : '<a href="https://tomtom.com" class="external" target="_blank">&copy; 1992 - 2023 TomTom.</a>'
},
'tianditu': {
tileUrlFormat: 'https://t{s}.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}',
tileUrlSubDomains: '01234567',
tileUrlExtraParams: [
{
paramName: 'tk',
paramValueType: 'tianditu_key'
}
],
annotationUrlFormat: 'https://t{s}.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}',
annotationUrlSubDomains: '01234567',
annotationUrlExtraParams: [
{
paramName: 'tk',
paramValueType: 'tianditu_key'
}
],
minZoom: 1,
maxZoom: 18,
defaultZoomLevel: 14,
website: 'https://www.tianditu.gov.cn',
attribution : '<a href="https://www.tianditu.gov.cn" class="external" target="_blank">天地图</a>'
} }
} }
+48 -16
View File
@@ -5,7 +5,8 @@ import {
getCustomMapMinZoomLevel, getCustomMapMinZoomLevel,
getCustomMapMaxZoomLevel, getCustomMapMaxZoomLevel,
getCustomMapDefaultZoomLevel, getCustomMapDefaultZoomLevel,
getTomTomMapAPIKey getTomTomMapAPIKey,
getTianDiTuMapAPIKey
} from '@/lib/server_settings.js'; } from '@/lib/server_settings.js';
import services from '@/lib/services.js'; import services from '@/lib/services.js';
@@ -35,6 +36,7 @@ export function createLeafletMapHolder(mapProvider) {
minZoomLevel: mapProvider !== 'custom' ? mapTileSource.minZoom : getCustomMapMinZoomLevel(), minZoomLevel: mapProvider !== 'custom' ? mapTileSource.minZoom : getCustomMapMinZoomLevel(),
leafletInstance: null, leafletInstance: null,
leafletTileLayer: null, leafletTileLayer: null,
leafletAnnotationLayer: null,
leafletZoomControl: null, leafletZoomControl: null,
leafletAttribution: null, leafletAttribution: null,
leafletCenterMarker: null leafletCenterMarker: null
@@ -65,21 +67,7 @@ export function createLeafletMapInstance(mapHolder, mapContainer, options) {
mapTileSource.tileUrlFormat = services.generateMapProxyTileImageUrl(mapHolder.mapProvider, options.language); mapTileSource.tileUrlFormat = services.generateMapProxyTileImageUrl(mapHolder.mapProvider, options.language);
mapTileSource.tileUrlSubDomains = ''; mapTileSource.tileUrlSubDomains = '';
} else if (mapTileSource.tileUrlExtraParams) { } else if (mapTileSource.tileUrlExtraParams) {
const params = []; mapTileSource.tileUrlFormat = getFinalUrlFormat(mapTileSource.tileUrlFormat, mapTileSource.tileUrlExtraParams, options);
for (let i = 0; i < mapTileSource.tileUrlExtraParams.length; i++) {
const param = mapTileSource.tileUrlExtraParams[i];
if (param.paramValueType === 'tomtom_key') {
params.push(param.paramName + '=' + getTomTomMapAPIKey());
} else if (param.paramValueType === 'language' && options.language) {
params.push(param.paramName + '=' + options.language);
}
}
if (params.length) {
mapTileSource.tileUrlFormat = mapTileSource.tileUrlFormat + '?' + params.join('&');
}
} }
const tileLayer = leaflet.tileLayer(mapTileSource.tileUrlFormat, { const tileLayer = leaflet.tileLayer(mapTileSource.tileUrlFormat, {
@@ -89,6 +77,24 @@ export function createLeafletMapInstance(mapHolder, mapContainer, options) {
}); });
tileLayer.addTo(leafletInstance); tileLayer.addTo(leafletInstance);
if (mapTileSource.annotationUrlFormat) {
if (isMapDataFetchProxyEnabled()) {
mapTileSource.annotationUrlFormat = services.generateMapProxyAnnotationImageUrl(mapHolder.mapProvider, options.language);
mapTileSource.annotationUrlSubDomains = '';
} else if (mapTileSource.annotationUrlExtraParams) {
mapTileSource.annotationUrlFormat = getFinalUrlFormat(mapTileSource.annotationUrlFormat, mapTileSource.annotationUrlExtraParams, options);
}
const annotationLayer = leaflet.tileLayer(mapTileSource.annotationUrlFormat, {
subdomains: mapTileSource.annotationUrlSubDomains,
maxZoom: mapTileSource.maxZoom,
minZoom: mapTileSource.minZoom
});
annotationLayer.addTo(leafletInstance);
mapHolder.leafletAnnotationLayer = annotationLayer;
}
const zoomControl = leaflet.control.zoom({ const zoomControl = leaflet.control.zoom({
zoomInTitle: options.text.zoomIn, zoomInTitle: options.text.zoomIn,
zoomOutTitle: options.text.zoomOut zoomOutTitle: options.text.zoomOut
@@ -161,3 +167,29 @@ function createCustomMapSource() {
defaultZoomLevel: getCustomMapDefaultZoomLevel() defaultZoomLevel: getCustomMapDefaultZoomLevel()
}; };
} }
function getFinalUrlFormat(urlFormat, urlExtraParams, options) {
const params = [];
for (let i = 0; i < urlExtraParams.length; i++) {
const param = urlExtraParams[i];
if (param.paramValueType === 'tomtom_key') {
params.push(param.paramName + '=' + getTomTomMapAPIKey());
} else if (param.paramValueType === 'tianditu_key') {
params.push(param.paramName + '=' + getTianDiTuMapAPIKey());
} else if (param.paramValueType === 'language' && options.language) {
params.push(param.paramName + '=' + options.language);
}
}
if (params.length) {
if (urlFormat.indexOf('?') >= 0) {
urlFormat = urlFormat + '&' + params.join('&');
} else {
urlFormat = urlFormat + '?' + params.join('&');
}
}
return urlFormat;
}
+4
View File
@@ -76,6 +76,10 @@ export function getTomTomMapAPIKey() {
return getServerDecodedSetting('tmak'); return getServerDecodedSetting('tmak');
} }
export function getTianDiTuMapAPIKey() {
return getServerDecodedSetting('tdak');
}
export function getGoogleMapAPIKey() { export function getGoogleMapAPIKey() {
return getServerDecodedSetting('gmak'); return getServerDecodedSetting('gmak');
} }
+10
View File
@@ -525,6 +525,16 @@ export default {
return url; return url;
}, },
generateMapProxyAnnotationImageUrl: (mapProvider, language) => {
const token = userState.getToken();
let url = `${apiConstants.baseProxyUrlPath}/map/annotation/{z}/{x}/{y}.png?provider=${mapProvider}&token=${token}`;
if (language) {
url = url + `&language=${language}`;
}
return url;
},
generateGoogleMapJavascriptUrl: (language, callbackFnName) => { generateGoogleMapJavascriptUrl: (language, callbackFnName) => {
let url = `${apiConstants.googleMapJavascriptUrl}?key=${getGoogleMapAPIKey()}&libraries=core,marker&callback=${callbackFnName}`; let url = `${apiConstants.googleMapJavascriptUrl}?key=${getGoogleMapAPIKey()}&libraries=core,marker&callback=${callbackFnName}`;
+1
View File
@@ -580,6 +580,7 @@ export default {
'cyclosm': 'CyclOSM', 'cyclosm': 'CyclOSM',
'cartodb': 'CARTO', 'cartodb': 'CARTO',
'tomtom': 'TomTom', 'tomtom': 'TomTom',
'tianditu': 'TianDiTu',
'googlemap': 'Google Map', 'googlemap': 'Google Map',
'baidumap': 'Baidu Map', 'baidumap': 'Baidu Map',
'amap': 'Amap', 'amap': 'Amap',
+1
View File
@@ -580,6 +580,7 @@ export default {
'cyclosm': 'CyclOSM', 'cyclosm': 'CyclOSM',
'cartodb': 'CARTO', 'cartodb': 'CARTO',
'tomtom': 'TomTom', 'tomtom': 'TomTom',
'tianditu': '天地图',
'googlemap': 'Google 地图', 'googlemap': 'Google 地图',
'baidumap': '百度地图', 'baidumap': '百度地图',
'amap': '高德地图', 'amap': '高德地图',