| @@ -1,22 +1,19 @@ | |||
| //****************************************************************************** | |||
| // LAYERS parameter: config_a_b_c | |||
| // a = 1 for depth in meters, 2 for depth in feet, 3 for fathoms | |||
| // b = 1 for 1 m safety depth (beginning of blue coloring) (unit equal to that set by a) | |||
| // c = 0 for pristine Navionics charts, 1 for Sonar Charts | |||
| // | |||
| // TRANSPARENT parameter: | |||
| // FALSE for non-layer | |||
| // TRUE for layer | |||
| // | |||
| // transparent true/false | |||
| // ugc - garmin active captain | |||
| // layer - 0 Seachart, 1 Sonarchart | |||
| // du - unit 1 for depth in meters, 2 for depth in feet, 3 for fathoms | |||
| // sd - safe depth | |||
| // sa ? | |||
| //****************************************************************************** | |||
| const | |||
| cReqParams = 'LAYERS=config_1_1_1&TRANSPARENT=TRUE&theme=0'; | |||
| cReqParams = 'transparent=true&ugc=true&layer=1&du=1&sd=2&sa=false'; | |||
| //****************************************************************************** | |||
| const | |||
| cTTL = 24*60*60; // 24 hour | |||
| cTTL = 10*60; // 10 Minutes | |||
| function CheckTTL(const ATimeStamp: Integer): Boolean; | |||
| begin | |||
| @@ -25,7 +22,7 @@ end; | |||
| function GetNavToken: AnsiString; | |||
| var | |||
| VNavToken: AnsiString; | |||
| VNavTokensJson: AnsiString; | |||
| VTimeStamp: Integer; | |||
| VResponseCode: Cardinal; | |||
| VResponseHeader, VResponseData: AnsiString; | |||
| @@ -36,15 +33,15 @@ begin | |||
| Global.Lock; | |||
| try | |||
| if Global.Exists(0) and Global.Exists(1) then begin | |||
| VNavToken := Global.GetVar(0); | |||
| VNavTokensJson := Global.GetVar(0); | |||
| VTimeStamp := Global.GetVar(1); | |||
| if (VNavToken <> '') and (VTimeStamp <> 0) and CheckTTL(VTimeStamp) then begin | |||
| Result := VNavToken; | |||
| if (VNavTokensJson <> '') and (VTimeStamp <> 0) and CheckTTL(VTimeStamp) then begin | |||
| Result := VNavTokensJson; | |||
| end; | |||
| end; | |||
| if (Result = '') and Assigned(Downloader) then begin | |||
| VRequestUrl := 'https://tile1.navionics.com/tile/get_key/Navionics_webapi_04041/maps.garmin.com'; | |||
| if (Result = '') and Assigned(Downloader) then begin | |||
| VRequestUrl := 'https://maps.garmin.com/marine/api/getNavionicsTokens'; | |||
| VRequestHeader := 'Origin: https://maps.garmin.com' + #13#10 + 'Referer: https://maps.garmin.com/'; | |||
| VResponseHeader := ''; | |||
| VResponseData := ''; | |||
| @@ -64,11 +61,18 @@ end; | |||
| //****************************************************************************** | |||
| var | |||
| VBuf : AnsiString; | |||
| VNavToken: AnsiString; | |||
| VNavBearer: AnsiString; | |||
| begin | |||
| VNavToken := GetNavToken; | |||
| VBuf := GetNavToken; | |||
| VNavToken := RegExprGetMatchSubStr(VBuf, '"configuration_token":"(.*)"', 1); | |||
| VNavBearer := RegExprGetMatchSubStr(VBuf, '"access_token":"(.*)",', 1); | |||
| if VNavToken <> '' then begin | |||
| ResultURL := TemplateToUrl(GetURLBase) + '?' + cReqParams + '&' + 'navtoken=' + VNavToken; | |||
| ResultURL := TemplateToUrl(GetURLBase) + '?' + 'config=' + VNavToken + '&' + cReqParams; | |||
| RequestHead:= 'Referer: https://maps.garmin.com/' + #13#10 + | |||
| 'Origin: https://maps.garmin.com' + #13#10 + | |||
| 'Authorization: Bearer '+ VNavBearer; | |||
| end else begin | |||
| ResultURL := ''; | |||
| end; | |||
| @@ -5,7 +5,7 @@ ParentSubMenu_ru=Водные карты | |||
| ParentSubMenu_uk=Водні карти | |||
| ParentSubMenu=Water maps | |||
| asLayer=1 | |||
| DefURLBase=https://tile{s}.navionics.com/tile/{z}/{x}/{y} | |||
| DefURLBase=https://tile{s}.navionics.com/viewer/api/v1/tile/{z}/{x}/{y} | |||
| ServerNames=1,2,3,4,5 | |||
| NameInCache=navionics_sonarchart_layer | |||
| Ext=.png | |||
| @@ -14,4 +14,3 @@ projection=1 | |||
| sradiusa=6378137 | |||
| sradiusb=6378137 | |||
| IsUseDownloaderInScript=1 | |||
| RequestHead=Referer: https://maps.garmin.com/ | |||
| @@ -1,22 +1,19 @@ | |||
| //****************************************************************************** | |||
| // LAYERS parameter: config_a_b_c | |||
| // a = 1 for depth in meters, 2 for depth in feet, 3 for fathoms | |||
| // b = 1 for 1 m safety depth (beginning of blue coloring) (unit equal to that set by a) | |||
| // c = 0 for pristine Navionics charts, 1 for Sonar Charts | |||
| // | |||
| // TRANSPARENT parameter: | |||
| // FALSE for non-layer | |||
| // TRUE for layer | |||
| // | |||
| // transparent true/false | |||
| // ugc - garmin active captain | |||
| // layer - 0 Seachart, 1 Sonarchart | |||
| // du - unit 1 for depth in meters, 2 for depth in feet, 3 for fathoms | |||
| // sd - safe depth | |||
| // sa ? | |||
| //****************************************************************************** | |||
| const | |||
| cReqParams = 'LAYERS=config_1_1_1&TRANSPARENT=FALSE&theme=0'; | |||
| cReqParams = 'transparent=false&ugc=true&layer=1&du=1&sd=2&sa=false'; | |||
| //****************************************************************************** | |||
| const | |||
| cTTL = 24*60*60; // 24 hour | |||
| cTTL = 10*60; // 10 Minutes | |||
| function CheckTTL(const ATimeStamp: Integer): Boolean; | |||
| begin | |||
| @@ -25,7 +22,7 @@ end; | |||
| function GetNavToken: AnsiString; | |||
| var | |||
| VNavToken: AnsiString; | |||
| VNavTokensJson: AnsiString; | |||
| VTimeStamp: Integer; | |||
| VResponseCode: Cardinal; | |||
| VResponseHeader, VResponseData: AnsiString; | |||
| @@ -36,15 +33,15 @@ begin | |||
| Global.Lock; | |||
| try | |||
| if Global.Exists(0) and Global.Exists(1) then begin | |||
| VNavToken := Global.GetVar(0); | |||
| VNavTokensJson := Global.GetVar(0); | |||
| VTimeStamp := Global.GetVar(1); | |||
| if (VNavToken <> '') and (VTimeStamp <> 0) and CheckTTL(VTimeStamp) then begin | |||
| Result := VNavToken; | |||
| if (VNavTokensJson <> '') and (VTimeStamp <> 0) and CheckTTL(VTimeStamp) then begin | |||
| Result := VNavTokensJson; | |||
| end; | |||
| end; | |||
| if (Result = '') and Assigned(Downloader) then begin | |||
| VRequestUrl := 'https://tile1.navionics.com/tile/get_key/Navionics_webapi_04041/maps.garmin.com'; | |||
| if (Result = '') and Assigned(Downloader) then begin | |||
| VRequestUrl := 'https://maps.garmin.com/marine/api/getNavionicsTokens'; | |||
| VRequestHeader := 'Origin: https://maps.garmin.com' + #13#10 + 'Referer: https://maps.garmin.com/'; | |||
| VResponseHeader := ''; | |||
| VResponseData := ''; | |||
| @@ -64,11 +61,18 @@ end; | |||
| //****************************************************************************** | |||
| var | |||
| VBuf : AnsiString; | |||
| VNavToken: AnsiString; | |||
| VNavBearer: AnsiString; | |||
| begin | |||
| VNavToken := GetNavToken; | |||
| VBuf := GetNavToken; | |||
| VNavToken := RegExprGetMatchSubStr(VBuf, '"configuration_token":"(.*)"', 1); | |||
| VNavBearer := RegExprGetMatchSubStr(VBuf, '"access_token":"(.*)",', 1); | |||
| if VNavToken <> '' then begin | |||
| ResultURL := TemplateToUrl(GetURLBase) + '?' + cReqParams + '&' + 'navtoken=' + VNavToken; | |||
| ResultURL := TemplateToUrl(GetURLBase) + '?' + 'config=' + VNavToken + '&' + cReqParams; | |||
| RequestHead:= 'Referer: https://maps.garmin.com/' + #13#10 + | |||
| 'Origin: https://maps.garmin.com' + #13#10 + | |||
| 'Authorization: Bearer '+ VNavBearer; | |||
| end else begin | |||
| ResultURL := ''; | |||
| end; | |||
| @@ -4,7 +4,7 @@ name=Navionics SonarChart(TM) | |||
| ParentSubMenu_ru=Водные карты | |||
| ParentSubMenu_uk=Водні карти | |||
| ParentSubMenu=Water maps | |||
| DefURLBase=https://tile{s}.navionics.com/tile/{z}/{x}/{y} | |||
| DefURLBase=https://tile{s}.navionics.com/viewer/api/v1/tile/{z}/{x}/{y} | |||
| ServerNames=1,2,3,4,5 | |||
| NameInCache=navionics_sonarchart | |||
| Ext=.png | |||
| @@ -13,4 +13,3 @@ projection=1 | |||
| sradiusa=6378137 | |||
| sradiusb=6378137 | |||
| IsUseDownloaderInScript=1 | |||
| RequestHead=Referer: https://maps.garmin.com/ | |||
| @@ -1,22 +1,19 @@ | |||
| //****************************************************************************** | |||
| // LAYERS parameter: config_a_b_c | |||
| // a = 1 for depth in meters, 2 for depth in feet, 3 for fathoms | |||
| // b = 1 for 1 m safety depth (beginning of blue coloring) (unit equal to that set by a) | |||
| // c = 0 for pristine Navionics charts, 1 for Sonar Charts | |||
| // | |||
| // TRANSPARENT parameter: | |||
| // FALSE for non-layer | |||
| // TRUE for layer | |||
| // | |||
| // transparent true/false | |||
| // ugc - garmin active captain | |||
| // layer - 0 Seachart, 1 Sonarchart | |||
| // du - unit 1 for depth in meters, 2 for depth in feet, 3 for fathoms | |||
| // sd - safe depth | |||
| // sa ? | |||
| //****************************************************************************** | |||
| const | |||
| cReqParams = 'LAYERS=config_1_1_0&TRANSPARENT=TRUE&theme=0'; | |||
| cReqParams = 'transparent=true&ugc=true&layer=0&du=1&sd=2&sa=false'; | |||
| //****************************************************************************** | |||
| const | |||
| cTTL = 24*60*60; // 24 hour | |||
| cTTL = 10*60; // 10 Minutes | |||
| function CheckTTL(const ATimeStamp: Integer): Boolean; | |||
| begin | |||
| @@ -25,7 +22,7 @@ end; | |||
| function GetNavToken: AnsiString; | |||
| var | |||
| VNavToken: AnsiString; | |||
| VNavTokensJson: AnsiString; | |||
| VTimeStamp: Integer; | |||
| VResponseCode: Cardinal; | |||
| VResponseHeader, VResponseData: AnsiString; | |||
| @@ -36,15 +33,15 @@ begin | |||
| Global.Lock; | |||
| try | |||
| if Global.Exists(0) and Global.Exists(1) then begin | |||
| VNavToken := Global.GetVar(0); | |||
| VNavTokensJson := Global.GetVar(0); | |||
| VTimeStamp := Global.GetVar(1); | |||
| if (VNavToken <> '') and (VTimeStamp <> 0) and CheckTTL(VTimeStamp) then begin | |||
| Result := VNavToken; | |||
| if (VNavTokensJson <> '') and (VTimeStamp <> 0) and CheckTTL(VTimeStamp) then begin | |||
| Result := VNavTokensJson; | |||
| end; | |||
| end; | |||
| if (Result = '') and Assigned(Downloader) then begin | |||
| VRequestUrl := 'https://tile1.navionics.com/tile/get_key/Navionics_webapi_04041/maps.garmin.com'; | |||
| if (Result = '') and Assigned(Downloader) then begin | |||
| VRequestUrl := 'https://maps.garmin.com/marine/api/getNavionicsTokens'; | |||
| VRequestHeader := 'Origin: https://maps.garmin.com' + #13#10 + 'Referer: https://maps.garmin.com/'; | |||
| VResponseHeader := ''; | |||
| VResponseData := ''; | |||
| @@ -64,11 +61,18 @@ end; | |||
| //****************************************************************************** | |||
| var | |||
| VBuf : AnsiString; | |||
| VNavToken: AnsiString; | |||
| VNavBearer: AnsiString; | |||
| begin | |||
| VNavToken := GetNavToken; | |||
| VBuf := GetNavToken; | |||
| VNavToken := RegExprGetMatchSubStr(VBuf, '"configuration_token":"(.*)"', 1); | |||
| VNavBearer := RegExprGetMatchSubStr(VBuf, '"access_token":"(.*)",', 1); | |||
| if VNavToken <> '' then begin | |||
| ResultURL := TemplateToUrl(GetURLBase) + '?' + cReqParams + '&' + 'navtoken=' + VNavToken; | |||
| ResultURL := TemplateToUrl(GetURLBase) + '?' + 'config=' + VNavToken + '&' + cReqParams; | |||
| RequestHead:= 'Referer: https://maps.garmin.com/' + #13#10 + | |||
| 'Origin: https://maps.garmin.com' + #13#10 + | |||
| 'Authorization: Bearer '+ VNavBearer; | |||
| end else begin | |||
| ResultURL := ''; | |||
| end; | |||
| @@ -5,7 +5,7 @@ ParentSubMenu_uk=Водні карти | |||
| ParentSubMenu=Water maps | |||
| name=Navionics Marine Charts | |||
| asLayer=1 | |||
| DefURLBase=https://tile{s}.navionics.com/tile/{z}/{x}/{y} | |||
| DefURLBase=https://tile{s}.navionics.com/viewer/api/v1/tile/{z}/{x}/{y} | |||
| ServerNames=1,2,3,4,5 | |||
| NameInCache=navionics_layer | |||
| Ext=.png | |||
| @@ -14,4 +14,3 @@ projection=1 | |||
| sradiusa=6378137 | |||
| sradiusb=6378137 | |||
| IsUseDownloaderInScript=1 | |||
| RequestHead=Referer: https://maps.garmin.com/ | |||
| @@ -1,22 +1,19 @@ | |||
| //****************************************************************************** | |||
| // LAYERS parameter: config_a_b_c | |||
| // a = 1 for depth in meters, 2 for depth in feet, 3 for fathoms | |||
| // b = 1 for 1 m safety depth (beginning of blue coloring) (unit equal to that set by a) | |||
| // c = 0 for pristine Navionics charts, 1 for Sonar Charts | |||
| // | |||
| // TRANSPARENT parameter: | |||
| // FALSE for non-layer | |||
| // TRUE for layer | |||
| // | |||
| // transparent true/false | |||
| // ugc - garmin active captain | |||
| // layer - 0 Seachart, 1 Sonarchart | |||
| // du - unit 1 for depth in meters, 2 for depth in feet, 3 for fathoms | |||
| // sd - safe depth | |||
| // sa ? | |||
| //****************************************************************************** | |||
| const | |||
| cReqParams = 'LAYERS=config_1_1_0&TRANSPARENT=FALSE&theme=0'; | |||
| cReqParams = 'transparent=false&ugc=true&layer=0&du=1&sd=2&sa=false'; | |||
| //****************************************************************************** | |||
| const | |||
| cTTL = 24*60*60; // 24 hour | |||
| cTTL = 10*60; // 10 Minutes | |||
| function CheckTTL(const ATimeStamp: Integer): Boolean; | |||
| begin | |||
| @@ -25,7 +22,7 @@ end; | |||
| function GetNavToken: AnsiString; | |||
| var | |||
| VNavToken: AnsiString; | |||
| VNavTokensJson: AnsiString; | |||
| VTimeStamp: Integer; | |||
| VResponseCode: Cardinal; | |||
| VResponseHeader, VResponseData: AnsiString; | |||
| @@ -36,15 +33,15 @@ begin | |||
| Global.Lock; | |||
| try | |||
| if Global.Exists(0) and Global.Exists(1) then begin | |||
| VNavToken := Global.GetVar(0); | |||
| VNavTokensJson := Global.GetVar(0); | |||
| VTimeStamp := Global.GetVar(1); | |||
| if (VNavToken <> '') and (VTimeStamp <> 0) and CheckTTL(VTimeStamp) then begin | |||
| Result := VNavToken; | |||
| if (VNavTokensJson <> '') and (VTimeStamp <> 0) and CheckTTL(VTimeStamp) then begin | |||
| Result := VNavTokensJson; | |||
| end; | |||
| end; | |||
| if (Result = '') and Assigned(Downloader) then begin | |||
| VRequestUrl := 'https://tile1.navionics.com/tile/get_key/Navionics_webapi_04041/maps.garmin.com'; | |||
| if (Result = '') and Assigned(Downloader) then begin | |||
| VRequestUrl := 'https://maps.garmin.com/marine/api/getNavionicsTokens'; | |||
| VRequestHeader := 'Origin: https://maps.garmin.com' + #13#10 + 'Referer: https://maps.garmin.com/'; | |||
| VResponseHeader := ''; | |||
| VResponseData := ''; | |||
| @@ -64,11 +61,18 @@ end; | |||
| //****************************************************************************** | |||
| var | |||
| VBuf : AnsiString; | |||
| VNavToken: AnsiString; | |||
| VNavBearer: AnsiString; | |||
| begin | |||
| VNavToken := GetNavToken; | |||
| VBuf := GetNavToken; | |||
| VNavToken := RegExprGetMatchSubStr(VBuf, '"configuration_token":"(.*)"', 1); | |||
| VNavBearer := RegExprGetMatchSubStr(VBuf, '"access_token":"(.*)",', 1); | |||
| if VNavToken <> '' then begin | |||
| ResultURL := TemplateToUrl(GetURLBase) + '?' + cReqParams + '&' + 'navtoken=' + VNavToken; | |||
| ResultURL := TemplateToUrl(GetURLBase) + '?' + 'config=' + VNavToken + '&' + cReqParams; | |||
| RequestHead:= 'Referer: https://maps.garmin.com/' + #13#10 + | |||
| 'Origin: https://maps.garmin.com' + #13#10 + | |||
| 'Authorization: Bearer '+ VNavBearer; | |||
| end else begin | |||
| ResultURL := ''; | |||
| end; | |||
| @@ -4,7 +4,7 @@ name=Navionics Marine Charts | |||
| ParentSubMenu_ru=Водные карты | |||
| ParentSubMenu_uk=Водні карти | |||
| ParentSubMenu=Water maps | |||
| DefURLBase=https://tile{s}.navionics.com/tile/{z}/{x}/{y} | |||
| DefURLBase=https://tile{s}.navionics.com/viewer/api/v1/tile/{z}/{x}/{y} | |||
| ServerNames=1,2,3,4,5 | |||
| NameInCache=navionics | |||
| Ext=.png | |||
| @@ -13,4 +13,3 @@ projection=1 | |||
| sradiusa=6378137 | |||
| sradiusb=6378137 | |||
| IsUseDownloaderInScript=1 | |||
| RequestHead=Referer: https://maps.garmin.com/ | |||