Skip to content

Commit dcb96cb

Browse files
authored
Merge pull request #237 from Yuki-Zhao/master
【bug】谷歌底图在webMap中访问不了。
2 parents 3778694 + 292d59a commit dcb96cb

File tree

1 file changed

+160
-1
lines changed

1 file changed

+160
-1
lines changed

src/openlayers/mapping/WebMap.js

Lines changed: 160 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)