jsは地図の緯度と経度の暗号化と復号化を実現します

 マップサービスを行う場合、安全性と効率性のために、時間の長さは、マップ上のポイント、ライン、およびプレーンの緯度と経度のポイントを暗号化および復号化します。

 convert.jsの緯度と経度の暗号化と復号化 

import SFMap from '../views/map-vector/sdk/'



/**
 * 解密经纬度
 * @param {*} list 
 */
export const convertExtinfo = (list) => {
    if (list && list.length > 0) {
        for (let item of list) {
            //如果不含有.和|,说明不需要解密
            if (item.extinfo && !item.extinfo.includes('.') && !item.extinfo.includes('|')) {
                item.extinfo = new SFMap.MssExtInfo(item.extinfo);
            }
        }
    }
    console.log("转换后的list:" + JSON.stringify(list))
    return list
}

/**
 * 解密后的数据进行拼接经纬度并 转换成POLYGON,linestring,point 等
 * @param {} list 
 */
export const convertExtinfoAndJoin = (list) => {
    if (list && list.length > 0) {
        for (let item of list) {
            let ext_info = item.extinfo;
            let ext_type = item.exttype
            if (ext_info) {
                 if(!ext_info.includes('.') && !ext_info.includes('|')){ //需要解密
                    ext_info =  new SFMap.MssExtInfo(ext_info);
                    let lnglatArray = ext_info._initializeGeoJSON.geometry.coordinates;
                    let ext_info_str = ''
                    if(ext_type == 'AOI'){
                    for(let xy of lnglatArray[0]){
                        ext_info_str+= xy[0]+' '+xy[1]+',' 
                    }
                    }else if(ext_type == 'ROADLINE'){
                        for(let xy of lnglatArray){
                            ext_info_str+= xy[0]+' '+xy[1]+',' 
                        }
                    }
                    ext_info = ext_info_str.substring(0,ext_info_str.length-1)
                 }else{  //无需解密,直接替换|和;
                    ext_info = ext_info.replace(/\|/g, ' ').replace(/\;/g, ',')
                 }
                if (ext_type == 'AOI' || ext_type == 'BUILDING') {
                    ext_info = 'POLYGON((' + ext_info + '))'
                } else if (ext_type == 'ROADLINE') {
                    ext_info = 'linestring(' + ext_info + ')'
                } else { return list }   
            }
            if(!ext_info && ext_type == 'POI'){
                 let x = item.location.lng
                 let y = item.location.lat
                 ext_info = 'point('+x+' '+y+')'
            }
            item.extinfo = ext_info
        }
    }
    console.log("转换后的list:" + JSON.stringify(list))
    return list
}

//str.indexOf('.')!=-1 && str.indexOf('|')!=-1
//str.search('.')!=-1 && str.search('|')!=-1
//str.includes('.') && str.includes('|')

 

おすすめ

転載: blog.csdn.net/qq_31905135/article/details/107816931
おすすめ