@@ -235,5 +235,44 @@ export const Util = {
235235 return ! ! fieldName . match ( new RegExp ( shortName ) ) ;
236236 }
237237 return false ;
238+ } ,
239+
240+ /**
241+ * @description 墨卡托转经纬度。
242+ * @param {Array } point - 待转换的点。
243+ * @returns {Object } 经纬度坐标。
244+ */
245+ unproject ( point ) {
246+ var d = 180 / Math . PI ,
247+ r = 6378137 ,
248+ ts = Math . exp ( - point [ 1 ] / r ) ,
249+ phi = Math . PI / 2 - 2 * Math . atan ( ts ) ;
250+ for ( var i = 0 , dphi = 0.1 , con ; i < 15 && Math . abs ( dphi ) > 1e-7 ; i ++ ) {
251+ con = 1 ;
252+ dphi = Math . PI / 2 - 2 * Math . atan ( ts * con ) - phi ;
253+ phi += dphi ;
254+ }
255+ return new mapboxgl . LngLat ( ( point [ 0 ] * d ) / r , phi * d ) ;
256+ } ,
257+
258+ /**
259+ * @description url 拼接代理或者凭证信息
260+ * @param {string } point - 待转换的 url
261+ * @returns {string } 转换后的 url
262+ */
263+ transformUrl ( { url, server, excludePortalProxyUrl, credentialValue, credentialKey } ) {
264+ let mapUrl = url . indexOf ( '.json' ) === - 1 ? `${ url } .json` : url ;
265+ let filter = 'getUrlResource.json?url=' ;
266+ if ( excludePortalProxyUrl && server . indexOf ( filter ) > - 1 ) {
267+ //大屏需求,或者有加上代理的
268+ let urlArray = server . split ( filter ) ;
269+ if ( urlArray . length > 1 ) {
270+ mapUrl = urlArray [ 0 ] + filter + mapUrl ;
271+ }
272+ }
273+ if ( credentialValue && credentialKey ) {
274+ mapUrl += '?' + credentialKey + '=' + credentialValue ;
275+ }
276+ return mapUrl ;
238277 }
239278}
0 commit comments