行政区划截取js

//判断行政区划级别
export function getAreaCodeLevel(areaCode) {
    if (areaCode) {
        let length = getVaildCode(areaCode).length;
        let level = '1';

        if (length > 0 && length <= 2) {//省级
            level = "1";
        } else if (length > 2 && length <= 4) { //市级
            level = "2";
        } else if (length > 4 && length <= 6) { //县级
            level = "3";
        } else if (length > 6 && length <= 9) { //乡级
            level = "4";
        } else if (length > 9 && length <= 12) { //村级
            level = "5";
        } else {
            level = "1";
        }
        return level;
    } else {
        return '';
    }
}


function getVaildCode(code) {
    let arr = code.split("").reverse();
    let c = 0;
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] != '0') {
            c = i;
            break;
        }
    }
    return code.substring(0, 12 - c);
}


export function getParentAreaCodeByCodeAndLevel(code, level) {
    let areaCode = ''
    if (level == '1')
        areaCode = code.substring(0, 2) + '0000000000';
    else if (level == '2')
        areaCode = code.substring(0, 4) + '00000000';
    else if (level == '3')
        areaCode = code.substring(0, 6) + '000000';
    else if (level == '4')
        areaCode = code.substring(0, 9) + '000';
    else if (level == '5')
        areaCode = code;
    return areaCode;
}

//截取行政区划
export function getAreaCode(code, level) {
    let areaCode = ''
    if (level == '1')
        areaCode = code.substring(0, 2);
    else if (level == '2')
        areaCode = code.substring(0, 4);
    else if (level == '3')
        areaCode = code.substring(0, 6);
    else if (level == '4')
        areaCode = code.substring(0, 9);
    else if (level == '5')
        areaCode = code;
    return areaCode;
}


export function getVaildCodes(code) {
    let arr = code.split("").reverse();
    let c = 0;
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] != '0') {
            c = i;
            break;
        }
    }
    return code.substring(0, 12 - c);
}

export function getVaildCodesNew(code) {
    let level = getAreaCodeLevel(code);
    let areaCode = ''
    if (level == '1')
        areaCode = code.substring(0, 2);
    else if (level == '2')
        areaCode = code.substring(0, 4);
    else if (level == '3')
        areaCode = code.substring(0, 6);
    else if (level == '4')
        areaCode = code.substring(0, 9);
    else if (level == '5')
        areaCode = code;
    return areaCode;
}
### 高德地图API实现指定地级市的地图截图或大屏展示 要通过高德地图API实现对指定地级市的地图截图或大屏展示,可以利用其JavaScript API的功能模块完成这一目标。具体来说,可以通过设置地图的中心点、缩放级别以及调用插件中的截图功能来满足需求。 #### 地图初始化与配置 首先,需要加载高德地图的JS API并初始化地图对象。根据提供的文档链接[^2],可以在HTML页面中引入必要的脚本文件,并通过`AMap.Map`类创建地图实例: ```javascript // 初始化地图 var map = new AMap.Map('container', { zoom: 8, // 设置初始缩放级别 center: [109.754638, 19.19533], // 海南省三亚市中心坐标作为示例 }); ``` 上述代码设置了地图容器ID为`container`,并将地图的初始视图为海南省三亚市的位置和合适的缩放比例[^3]。 #### 聚焦到特定地级市 为了聚焦于某个具体的地级市,需获取该城市的地理范围数据(通常是经纬度包围盒)。这一步可通过高德地图的服务接口查询得到城市对应的边界信息。例如,假设我们希望定位至广州市,则可执行如下操作: ```javascript // 查询城市边界服务 AMap.service('AMap.DistrictSearch', function() { // 加载DistrictSearch服务 var districtSearch = new AMap.DistrictSearch({ level: 'city', subdistrict: 0, }); districtSearch.search('广州市', function(status, result) { if (status === 'complete') { var bounds = result.districtList[0].boundaries; if (bounds.length) { map.setBounds(bounds); // 自动调整视野以覆盖整个城市区域 } } else { console.error('无法检索城市边界'); } }); }); ``` 此部分实现了基于行政区划名称自动适配地图显示范围的效果[^1]。 #### 实现地图截图功能 对于生成静态图片的需求,高德提供了专门用于捕捉当前屏幕内容的方法——`AMap.Snapshot`插件。下面是一个简单的例子说明如何保存一张PNG格式的地图图像: ```javascript AMap.plugin(['AMap.Snapshot'], function () { snapshot = new AMap.Snapshot(); snapshot.getSnapshot(map, function(error, src){ if (!error){ document.getElementById('snapshot').src=src; // 将返回的结果URL赋给img标签 }else{ alert('截图失败!'); } }, { type:'png' // 可选参数,默认jpg;支持png透明背景 }); }); ``` 以上代码片段展示了如何捕获已渲染好的地图画面,并将其转换成可以直接使用的网络资源路径。 ### 注意事项 - 确保应用申请了有效的高德开放平台Key,并正确填写到项目配置当中。 - 如果计划频繁请求或者大规模部署,请留意官方关于流量限制的相关规定以免超出免费额度造成额外成本支出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值