Skip to content

Commit 292d59a

Browse files
committed
【update】1) webmap改变互联网谷歌地图的地址。之前地址不可访问了
2)支持传入google api的key,访问瓦片时加上 3)谷歌底图的标注根据cookie中的语言或者是浏览器语言,而现实对应语言的标注 (reviewed by yuzy)
1 parent 042551c commit 292d59a

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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy