mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-18 08:44:25 +08:00
custom map tile server supports annotation layer
This commit is contained in:
+2
-1
@@ -168,7 +168,8 @@ func startWebServer(c *cli.Context) error {
|
|||||||
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 {
|
if config.MapProvider == settings.TianDiTuProvider ||
|
||||||
|
(config.MapProvider == settings.CustomProvider && config.CustomMapTileServerAnnotationLayerUrl != "") {
|
||||||
proxyRoute.GET("/map/annotation/:zoomLevel/:coordinateX/:fileName", bindProxy(api.MapImages.MapAnnotationImageProxyHandler))
|
proxyRoute.GET("/map/annotation/:zoomLevel/:coordinateX/:fileName", bindProxy(api.MapImages.MapAnnotationImageProxyHandler))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -212,9 +212,12 @@ amap_application_secret =
|
|||||||
# For "amap" only, Amap JavaScript API external proxy url, this setting must be provided when "amap_security_verification_method" is set to "external_proxy"
|
# For "amap" only, Amap JavaScript API external proxy url, this setting must be provided when "amap_security_verification_method" is set to "external_proxy"
|
||||||
amap_api_external_proxy_url =
|
amap_api_external_proxy_url =
|
||||||
|
|
||||||
# For "custom" only, the custom map tile server url, supports {x}, {y} (coordinates) and {z} (zoom level) placeholders, like "https://tile.openstreetmap.org/{z}/{x}/{y}.png"
|
# For "custom" only, the tile layer url of custom map tile server, supports {x}, {y} (coordinates) and {z} (zoom level) placeholders, like "https://tile.openstreetmap.org/{z}/{x}/{y}.png"
|
||||||
custom_map_tile_server_url =
|
custom_map_tile_server_url =
|
||||||
|
|
||||||
|
# For "custom" only, the optional annotation layer url of custom map tile server, supports {x}, {y} (coordinates) and {z} (zoom level) placeholders
|
||||||
|
custom_map_tile_server_annotation_url =
|
||||||
|
|
||||||
# For "custom" only, the min zoom level (0 - 255) for custom map tile server, default is 1
|
# For "custom" only, the min zoom level (0 - 255) for custom map tile server, default is 1
|
||||||
custom_map_tile_server_min_zoom_level = 1
|
custom_map_tile_server_min_zoom_level = 1
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ func (p *MapImageProxy) MapTileImageProxyHandler(c *core.Context) (*httputil.Rev
|
|||||||
} else if mapProvider == settings.TianDiTuProvider {
|
} else if mapProvider == settings.TianDiTuProvider {
|
||||||
return tianDiTuMapTileImageUrlFormat + "&tk=" + settings.Container.Current.TianDiTuAPIKey, nil
|
return tianDiTuMapTileImageUrlFormat + "&tk=" + settings.Container.Current.TianDiTuAPIKey, nil
|
||||||
} else if mapProvider == settings.CustomProvider {
|
} else if mapProvider == settings.CustomProvider {
|
||||||
return settings.Container.Current.CustomMapTileServerUrl, nil
|
return settings.Container.Current.CustomMapTileServerTileLayerUrl, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return "", errs.ErrParameterInvalid
|
return "", errs.ErrParameterInvalid
|
||||||
@@ -70,6 +70,8 @@ func (p *MapImageProxy) MapAnnotationImageProxyHandler(c *core.Context) (*httput
|
|||||||
return p.mapImageProxyHandler(c, func(c *core.Context, mapProvider string) (string, *errs.Error) {
|
return p.mapImageProxyHandler(c, func(c *core.Context, mapProvider string) (string, *errs.Error) {
|
||||||
if mapProvider == settings.TianDiTuProvider {
|
if mapProvider == settings.TianDiTuProvider {
|
||||||
return tianDiTuMapAnnotationUrlFormat + "&tk=" + settings.Container.Current.TianDiTuAPIKey, nil
|
return tianDiTuMapAnnotationUrlFormat + "&tk=" + settings.Container.Current.TianDiTuAPIKey, nil
|
||||||
|
} else if mapProvider == settings.CustomProvider {
|
||||||
|
return settings.Container.Current.CustomMapTileServerAnnotationLayerUrl, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return "", errs.ErrParameterInvalid
|
return "", errs.ErrParameterInvalid
|
||||||
|
|||||||
@@ -40,7 +40,15 @@ func ServerSettingsCookie(config *settings.Config) core.MiddlewareHandlerFunc {
|
|||||||
settingsArr = append(settingsArr, buildStringSetting("cmzl", fmt.Sprintf("%d-%d-%d", config.CustomMapTileServerMinZoomLevel, config.CustomMapTileServerMaxZoomLevel, config.CustomMapTileServerDefaultZoomLevel)))
|
settingsArr = append(settingsArr, buildStringSetting("cmzl", fmt.Sprintf("%d-%d-%d", config.CustomMapTileServerMinZoomLevel, config.CustomMapTileServerMaxZoomLevel, config.CustomMapTileServerDefaultZoomLevel)))
|
||||||
|
|
||||||
if !config.EnableMapDataFetchProxy {
|
if !config.EnableMapDataFetchProxy {
|
||||||
settingsArr = append(settingsArr, buildEncodedStringSetting("cmsu", config.CustomMapTileServerUrl))
|
settingsArr = append(settingsArr, buildEncodedStringSetting("cmsu", config.CustomMapTileServerTileLayerUrl))
|
||||||
|
|
||||||
|
if config.CustomMapTileServerAnnotationLayerUrl != "" {
|
||||||
|
settingsArr = append(settingsArr, buildEncodedStringSetting("cmau", config.CustomMapTileServerAnnotationLayerUrl))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if config.CustomMapTileServerAnnotationLayerUrl != "" {
|
||||||
|
settingsArr = append(settingsArr, buildBooleanSetting("cmap", config.EnableMapDataFetchProxy))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+18
-16
@@ -240,21 +240,22 @@ type Config struct {
|
|||||||
EnableDataExport bool
|
EnableDataExport bool
|
||||||
|
|
||||||
// Map
|
// Map
|
||||||
MapProvider string
|
MapProvider string
|
||||||
EnableMapDataFetchProxy bool
|
EnableMapDataFetchProxy bool
|
||||||
MapProxy string
|
MapProxy string
|
||||||
TomTomMapAPIKey string
|
TomTomMapAPIKey string
|
||||||
TianDiTuAPIKey string
|
TianDiTuAPIKey string
|
||||||
GoogleMapAPIKey string
|
GoogleMapAPIKey string
|
||||||
BaiduMapAK string
|
BaiduMapAK string
|
||||||
AmapApplicationKey string
|
AmapApplicationKey string
|
||||||
AmapSecurityVerificationMethod string
|
AmapSecurityVerificationMethod string
|
||||||
AmapApplicationSecret string
|
AmapApplicationSecret string
|
||||||
AmapApiExternalProxyUrl string
|
AmapApiExternalProxyUrl string
|
||||||
CustomMapTileServerUrl string
|
CustomMapTileServerTileLayerUrl string
|
||||||
CustomMapTileServerMinZoomLevel uint8
|
CustomMapTileServerAnnotationLayerUrl string
|
||||||
CustomMapTileServerMaxZoomLevel uint8
|
CustomMapTileServerMinZoomLevel uint8
|
||||||
CustomMapTileServerDefaultZoomLevel uint8
|
CustomMapTileServerMaxZoomLevel uint8
|
||||||
|
CustomMapTileServerDefaultZoomLevel uint8
|
||||||
|
|
||||||
// Exchange Rates
|
// Exchange Rates
|
||||||
ExchangeRatesDataSource string
|
ExchangeRatesDataSource string
|
||||||
@@ -691,7 +692,8 @@ func loadMapConfiguration(config *Config, configFile *ini.File, sectionName stri
|
|||||||
config.AmapApplicationSecret = getConfigItemStringValue(configFile, sectionName, "amap_application_secret")
|
config.AmapApplicationSecret = getConfigItemStringValue(configFile, sectionName, "amap_application_secret")
|
||||||
config.AmapApiExternalProxyUrl = getConfigItemStringValue(configFile, sectionName, "amap_api_external_proxy_url")
|
config.AmapApiExternalProxyUrl = getConfigItemStringValue(configFile, sectionName, "amap_api_external_proxy_url")
|
||||||
|
|
||||||
config.CustomMapTileServerUrl = getConfigItemStringValue(configFile, sectionName, "custom_map_tile_server_url")
|
config.CustomMapTileServerTileLayerUrl = getConfigItemStringValue(configFile, sectionName, "custom_map_tile_server_url")
|
||||||
|
config.CustomMapTileServerAnnotationLayerUrl = getConfigItemStringValue(configFile, sectionName, "custom_map_tile_server_annotation_url")
|
||||||
config.CustomMapTileServerMinZoomLevel = getConfigItemUint8Value(configFile, sectionName, "custom_map_tile_server_min_zoom_level", 1)
|
config.CustomMapTileServerMinZoomLevel = getConfigItemUint8Value(configFile, sectionName, "custom_map_tile_server_min_zoom_level", 1)
|
||||||
config.CustomMapTileServerMaxZoomLevel = getConfigItemUint8Value(configFile, sectionName, "custom_map_tile_server_max_zoom_level", 18)
|
config.CustomMapTileServerMaxZoomLevel = getConfigItemUint8Value(configFile, sectionName, "custom_map_tile_server_max_zoom_level", 18)
|
||||||
config.CustomMapTileServerDefaultZoomLevel = getConfigItemUint8Value(configFile, sectionName, "custom_map_tile_server_default_zoom_level", 14)
|
config.CustomMapTileServerDefaultZoomLevel = getConfigItemUint8Value(configFile, sectionName, "custom_map_tile_server_default_zoom_level", 14)
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
import mapConstants from '@/consts/map.js';
|
import mapConstants from '@/consts/map.js';
|
||||||
import {
|
import {
|
||||||
isMapDataFetchProxyEnabled,
|
isMapDataFetchProxyEnabled,
|
||||||
getCustomMapTileServerUrl,
|
getCustomMapTileLayerUrl,
|
||||||
|
getCustomMapAnnotationLayerUrl,
|
||||||
|
isCustomMapAnnotationLayerDataFetchProxyEnabled,
|
||||||
getCustomMapMinZoomLevel,
|
getCustomMapMinZoomLevel,
|
||||||
getCustomMapMaxZoomLevel,
|
getCustomMapMaxZoomLevel,
|
||||||
getCustomMapDefaultZoomLevel,
|
getCustomMapDefaultZoomLevel,
|
||||||
@@ -77,7 +79,7 @@ export function createLeafletMapInstance(mapHolder, mapContainer, options) {
|
|||||||
});
|
});
|
||||||
tileLayer.addTo(leafletInstance);
|
tileLayer.addTo(leafletInstance);
|
||||||
|
|
||||||
if (mapTileSource.annotationUrlFormat) {
|
if (mapTileSource.annotationUrlFormat || (mapHolder.mapProvider === 'custom' && isCustomMapAnnotationLayerDataFetchProxyEnabled())) {
|
||||||
if (isMapDataFetchProxyEnabled()) {
|
if (isMapDataFetchProxyEnabled()) {
|
||||||
mapTileSource.annotationUrlFormat = services.generateMapProxyAnnotationImageUrl(mapHolder.mapProvider, options.language);
|
mapTileSource.annotationUrlFormat = services.generateMapProxyAnnotationImageUrl(mapHolder.mapProvider, options.language);
|
||||||
mapTileSource.annotationUrlSubDomains = '';
|
mapTileSource.annotationUrlSubDomains = '';
|
||||||
@@ -160,8 +162,10 @@ export function removeLeafletMapCenterMaker(mapHolder) {
|
|||||||
|
|
||||||
function createCustomMapSource() {
|
function createCustomMapSource() {
|
||||||
return {
|
return {
|
||||||
tileUrlFormat: getCustomMapTileServerUrl(),
|
tileUrlFormat: getCustomMapTileLayerUrl(),
|
||||||
tileUrlSubDomains: '',
|
tileUrlSubDomains: '',
|
||||||
|
annotationUrlFormat: getCustomMapAnnotationLayerUrl(),
|
||||||
|
annotationUrlSubDomains: '',
|
||||||
minZoom: getCustomMapMinZoomLevel(),
|
minZoom: getCustomMapMinZoomLevel(),
|
||||||
maxZoom: getCustomMapMaxZoomLevel(),
|
maxZoom: getCustomMapMaxZoomLevel(),
|
||||||
defaultZoomLevel: getCustomMapDefaultZoomLevel()
|
defaultZoomLevel: getCustomMapDefaultZoomLevel()
|
||||||
|
|||||||
@@ -53,10 +53,18 @@ export function isMapDataFetchProxyEnabled() {
|
|||||||
return getServerSetting('mp') === '1';
|
return getServerSetting('mp') === '1';
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getCustomMapTileServerUrl() {
|
export function getCustomMapTileLayerUrl() {
|
||||||
return getServerDecodedSetting('cmsu');
|
return getServerDecodedSetting('cmsu');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getCustomMapAnnotationLayerUrl() {
|
||||||
|
return getServerDecodedSetting('cmau');
|
||||||
|
}
|
||||||
|
|
||||||
|
export function isCustomMapAnnotationLayerDataFetchProxyEnabled() {
|
||||||
|
return getServerSetting('cmap') === '1';
|
||||||
|
}
|
||||||
|
|
||||||
export function getCustomMapMinZoomLevel() {
|
export function getCustomMapMinZoomLevel() {
|
||||||
const zoomLevelSettings = (getServerSetting('cmzl') || '').split('-');
|
const zoomLevelSettings = (getServerSetting('cmzl') || '').split('-');
|
||||||
return (zoomLevelSettings && zoomLevelSettings[0]) ? parseInt(zoomLevelSettings[0]) : 1;
|
return (zoomLevelSettings && zoomLevelSettings[0]) ? parseInt(zoomLevelSettings[0]) : 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user