@@ -85,6 +85,7 @@ const dpiConfig = {
8585 * @param {boolean } [options.excludePortalProxyUrl] - server传递过来的url是否带有代理
8686 * @param {Object } [options.serviceProxy] - iportal内置代理信息, 仅矢量瓦片图层上图才会使用
8787 * @param {string } [options.tiandituKey] - 天地图的key
88+ * @param {string } [options.googleMapsAPIKey] - 谷歌底图需要的key
8889 * @param {string } [options.proxy] - 代理地址,当域名不一致,请求会加上代理。避免跨域
8990 * @param {string } [options.tileFormat] - 地图瓦片出图格式,png/webp
9091 * @param {function } [options.mapSetting.mapClickCallback] - 地图被点击的回调函数
@@ -114,6 +115,7 @@ export class WebMap extends Observable {
114115 this . excludePortalProxyUrl = options . excludePortalProxyUrl || false ;
115116 this . serviceProxy = options . serviceProxy || null ;
116117 this . tiandituKey = options . tiandituKey ;
118+ this . googleMapsAPIKey = options . googleMapsAPIKey || '' ;
117119 this . proxy = options . proxy ;
118120 //计数叠加图层,处理过的数量(成功和失败都会计数)
119121 this . layerAdded = 0 ;
@@ -973,7 +975,7 @@ export class WebMap extends Observable {
973975 baseLayerInfo . iserverUrl = 'https://www.openstreetmap.org' ;
974976 break ;
975977 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 } ` ;
977979 baseLayerInfo . epsgCode = 'EPSG:3857' ;
978980 baseLayerInfo . minZoom = 1 ;
979981 baseLayerInfo . maxZoom = 22 ;
@@ -4856,4 +4858,161 @@ export class WebMap extends Observable {
48564858 const layer = new olLayer . Graticule ( graticuleOptions ) ;
48574859 this . map . addLayer ( layer ) ;
48584860 }
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+ }
48595018}
0 commit comments