@@ -85,6 +85,7 @@ const dpiConfig = {
85
85
* @param {boolean } [options.excludePortalProxyUrl] - server传递过来的url是否带有代理
86
86
* @param {Object } [options.serviceProxy] - iportal内置代理信息, 仅矢量瓦片图层上图才会使用
87
87
* @param {string } [options.tiandituKey] - 天地图的key
88
+ * @param {string } [options.googleMapsAPIKey] - 谷歌底图需要的key
88
89
* @param {string } [options.proxy] - 代理地址,当域名不一致,请求会加上代理。避免跨域
89
90
* @param {string } [options.tileFormat] - 地图瓦片出图格式,png/webp
90
91
* @param {function } [options.mapSetting.mapClickCallback] - 地图被点击的回调函数
@@ -114,6 +115,7 @@ export class WebMap extends Observable {
114
115
this . excludePortalProxyUrl = options . excludePortalProxyUrl || false ;
115
116
this . serviceProxy = options . serviceProxy || null ;
116
117
this . tiandituKey = options . tiandituKey ;
118
+ this . googleMapsAPIKey = options . googleMapsAPIKey || '' ;
117
119
this . proxy = options . proxy ;
118
120
//计数叠加图层,处理过的数量(成功和失败都会计数)
119
121
this . layerAdded = 0 ;
@@ -973,7 +975,7 @@ export class WebMap extends Observable {
973
975
baseLayerInfo . iserverUrl = 'https://www.openstreetmap.org' ;
974
976
break ;
975
977
case ( 'GOOGLE' ) :
976
- baseLayerInfo . url = ' https://www.google.cn /maps/vt/ pb=!1m4!1m3! 1i{z}!2i{x}!3i{y}!2m3!1e0!2sm!3i380072576!3m8!2szh-CN!3scn!5e1105 !12m4!1e68!2m2!1sset!2sRoadmap!4e0!5m1!1e0' ;
978
+ baseLayerInfo . url = ` https://maps.googleapis.com /maps/vt? pb=!1m5! 1m4!1i{z}!2i{x}!3i{y}!4i256! 2m3!1e0!2sm!3i540264686!3m12!2s ${ this . getLang ( ) } !3sUS!5e18 !12m4!1e68!2m2!1sset!2sRoadmap!12m3!1e37!2m1!1ssmartmaps!4e0&key= ${ this . googleMapsAPIKey } ` ;
977
979
baseLayerInfo . epsgCode = 'EPSG:3857' ;
978
980
baseLayerInfo . minZoom = 1 ;
979
981
baseLayerInfo . maxZoom = 22 ;
@@ -4856,4 +4858,161 @@ export class WebMap extends Observable {
4856
4858
const layer = new olLayer . Graticule ( graticuleOptions ) ;
4857
4859
this . map . addLayer ( layer ) ;
4858
4860
}
4861
+ /**
4862
+ * @private
4863
+ * @function ol.supermap.WebMap.prototype.getLang
4864
+ * @description 检测当前cookie中的语言或者浏览器所用语言
4865
+ * @returns {string } 语言名称,如zh-CN
4866
+ */
4867
+ getLang ( ) {
4868
+ if ( this . getCookie ( 'language' ) ) {
4869
+ const cookieLang = this . getCookie ( 'language' ) ;
4870
+ return this . formatCookieLang ( cookieLang ) ;
4871
+ } else {
4872
+ const browerLang = navigator . language || navigator . browserLanguage ;
4873
+ return browerLang ;
4874
+ }
4875
+ }
4876
+ /**
4877
+ * @private
4878
+ * @function ol.supermap.WebMap.prototype.getCookie
4879
+ * @description 获取cookie中某个key对应的值
4880
+ * @returns {string } 某个key对应的值
4881
+ */
4882
+ getCookie ( key ) {
4883
+ key = key . toLowerCase ( ) ;
4884
+ let value = null ;
4885
+ let cookies = document . cookie . split ( ';' ) ;
4886
+ cookies . forEach ( function ( cookie ) {
4887
+ const arr = cookie . split ( '=' ) ;
4888
+ if ( arr [ 0 ] . toLowerCase ( ) . trim ( ) === key ) {
4889
+ value = arr [ 1 ] . trim ( ) ;
4890
+ return ;
4891
+ }
4892
+ } ) ;
4893
+ return value ;
4894
+ }
4895
+ /**
4896
+ * @private
4897
+ * @function ol.supermap.WebMap.prototype.formatCookieLang
4898
+ * @description 将从cookie中获取的lang,转换成全称,如zh=>zh-CN
4899
+ * @returns {string } 转换后的语言名称
4900
+ */
4901
+ formatCookieLang ( cookieLang ) {
4902
+ let lang ;
4903
+ switch ( cookieLang ) {
4904
+ case 'zh' :
4905
+ lang = 'zh-CN' ;
4906
+ break ;
4907
+ case 'ar' :
4908
+ lang = 'ar-EG' ;
4909
+ break ;
4910
+ case 'bg' :
4911
+ lang = 'bg-BG' ;
4912
+ break ;
4913
+ case 'ca' :
4914
+ lang = 'ca-ES' ;
4915
+ break ;
4916
+ case 'cs' :
4917
+ lang = 'cs-CZ' ;
4918
+ break ;
4919
+ case 'da' :
4920
+ lang = 'da-DK' ;
4921
+ break ;
4922
+ case 'de' :
4923
+ lang = 'de-DE' ;
4924
+ break ;
4925
+ case 'el' :
4926
+ lang = 'el-GR' ;
4927
+ break ;
4928
+ case 'es' :
4929
+ lang = 'es-ES' ;
4930
+ break ;
4931
+ case 'et' :
4932
+ lang = 'et-EE' ;
4933
+ break ;
4934
+ case 'fa' :
4935
+ lang = 'fa-IR' ;
4936
+ break ;
4937
+ case 'fl' :
4938
+ lang = 'fi-FI' ;
4939
+ break ;
4940
+ case 'fr' :
4941
+ lang = 'fr-FR' ;
4942
+ break ;
4943
+ case 'he' :
4944
+ lang = 'he-IL' ;
4945
+ break ;
4946
+ case 'hu' :
4947
+ lang = 'hu-HU' ;
4948
+ break ;
4949
+ case 'id' :
4950
+ lang = 'id-ID' ;
4951
+ break ;
4952
+ case 'is' :
4953
+ lang = 'is-IS' ;
4954
+ break ;
4955
+ case 'it' :
4956
+ lang = 'it-IT' ;
4957
+ break ;
4958
+ case 'ja' :
4959
+ lang = 'ja-JP' ;
4960
+ break ;
4961
+ case 'ko' :
4962
+ lang = 'ko-KR' ;
4963
+ break ;
4964
+ case 'ku' :
4965
+ lang = 'ku-IQ' ;
4966
+ break ;
4967
+ case 'mn' :
4968
+ lang = 'mn-MN' ;
4969
+ break ;
4970
+ case 'nb' :
4971
+ lang = 'nb-NO' ;
4972
+ break ;
4973
+ case 'ne' :
4974
+ lang = 'ne-NP' ;
4975
+ break ;
4976
+ case 'nl' :
4977
+ lang = 'nl-NL' ;
4978
+ break ;
4979
+ case 'pl' :
4980
+ lang = 'pl-PL' ;
4981
+ break ;
4982
+ case 'pt' :
4983
+ lang = 'pt-PT' ;
4984
+ break ;
4985
+ case 'ru' :
4986
+ lang = 'ru-RU' ;
4987
+ break ;
4988
+ case 'sk' :
4989
+ lang = 'sk-SK' ;
4990
+ break ;
4991
+ case 'sl' :
4992
+ lang = 'sl-SI' ;
4993
+ break ;
4994
+ case 'sr' :
4995
+ lang = 'sr-RS' ;
4996
+ break ;
4997
+ case 'sv' :
4998
+ lang = 'sv-SE' ;
4999
+ break ;
5000
+ case 'th' :
5001
+ lang = 'th-TH' ;
5002
+ break ;
5003
+ case 'tr' :
5004
+ lang = 'tr-TR' ;
5005
+ break ;
5006
+ case 'uk' :
5007
+ lang = 'uk-UA' ;
5008
+ break ;
5009
+ case 'vi' :
5010
+ lang = 'vi-VN' ;
5011
+ break ;
5012
+ default :
5013
+ lang = 'en-US' ;
5014
+ break ;
5015
+ }
5016
+ return lang ;
5017
+ }
4859
5018
}
0 commit comments