`

百度地图区域 反向 遮盖

阅读更多
function getBoundary() {
  
    var bdary = new BMap.Boundary(); 
    if ($("#sel_Area").val() != "") {
     
         
                
        bdary.get($("#sel_Area").find("option:selected").text(), function (rs) {       //获取行政区域

                    var count = rs.boundaries.length; //行政区域的点有多少个
                    if (count === 0) {
                        alert('未能获取当前输入行政区域');
                        return;
                    }
                    //添加遮罩层
                    //思路:利用行政区划点的集合与外围自定义东南西北形成一个环形遮罩层
                    //1.获取选中行政区划边框点的集合  rs.boundaries[0]
                    var strs = new Array();
                    strs = rs.boundaries[0].split(";");
                    var EN = "";    //行政区划东北段点的集合         
                    var pt_e = strs[0]; //行政区划最东边点的经纬度
                    var pt_n = strs[0]; //行政区划最北边点的经纬度
                    var pt_w = strs[0]; //行政区划最西边点的经纬度
                    var pt_s = strs[0]; //行政区划最南边点的经纬度
                    var n1 = ""; //行政区划最东边点在点集合中的索引位置
                    var n2 = ""; //行政区划最北边点在点集合中的索引位置
                    var n3 = ""; //行政区划最西边点在点集合中的索引位置
                    var n4 = ""; //行政区划最南边点在点集合中的索引位置
			
        
          
                    //2.循环行政区划边框点集合找出最东南西北四个点的经纬度以及索引位置
                    for (var n = 0; n < strs.length; n++) {
                        var pt_e_f = parseFloat(pt_e.split(",")[0]);
                        var pt_n_f = parseFloat(pt_n.split(",")[1]);
                        var pt_w_f = parseFloat(pt_w.split(",")[0]);
                        var pt_s_f = parseFloat(pt_s.split(",")[1]);

                        var sPt = new Array();
                        try {
                            sPt = strs[n].split(",");
                            var spt_j = parseFloat(sPt[0]);
                            var spt_w = parseFloat(sPt[1]);
                            if (pt_e_f < spt_j) {   //东
                                pt_e = strs[n];
                                pt_e_f = spt_j;
                                n1 = n;
                            }
                            if (pt_n_f < spt_w) {  //北
                                pt_n_f = spt_w;
                                pt_n = strs[n];
                                n2 = n;
                            }

                            if (pt_w_f > spt_j) {   //西
                                pt_w_f = spt_j;
                                pt_w = strs[n];
                                n3 = n;
                            }
                            if (pt_s_f > spt_w) {   //南
                                pt_s_f = spt_w;
                                pt_s = strs[n];
                                n4 = n;
                            }
                        }
                        catch (err) {
                            alert(err);
                        }
                    }
			

                    for (var o = n1; o < strs.length; o++) {
                        EN += strs[o] + ";"                    
                    }        
                    for(var o=0;o<=n1;o++){
                        EN += strs[o] + ";"
                    }
              
            


                    //4.自定义外围边框点的集合
                    var E_JW = "170.672126, 39.623555;";            //东
                    var EN_JW = "170.672126, 81.291804;";       //东北角
                    var N_JW = "105.913641, 81.291804;";        //北
                    var NW_JW = "-169.604276,  81.291804;";     //西北角
                    var W_JW = "-169.604276, 38.244136;";       //西
                    var WS_JW = "-169.604276, -68.045308;";     //西南角
                    var S_JW = "114.15563, -68.045308;";            //南
                    var SE_JW = "170.672126, -68.045308 ;";         //东南角


                    var ply1 = new BMap.Polygon(EN + E_JW+EN_JW+NW_JW+WS_JW+SE_JW+E_JW, { strokeColor: "none", fillColor: "rgb(246,246,246)", strokeOpacity: 0, fillOpacity: 0.9 }); //建立多边形覆盖物
                    map.addOverlay(ply1);

                    //5. 给目标行政区划添加边框,其实就是给目标行政区划添加一个没有填充物的遮罩层
                    var ply = new BMap.Polygon(rs.boundaries[0], { strokeWeight: 2, strokeColor: "#ff0000", fillColor: "" });
                    map.addOverlay(ply);
                    //map.setViewport(ply.getPath());    //调整视野              

                });
            }
        }

 地图api有过变化 之前的反向遮盖 代码有bug了,这个是 修改后的;

分享到:
评论

相关推荐

    百度地图高亮显示城市行政区域,遮盖非目标区域

    利用目标区域点的集合与外围自定义区域形成一个环形遮罩层,高亮显示所选行政区划,遮盖非目标区域。

    仿美团外卖商家百度地图

    本项目旨在实现反向解析地址、自动地图搜索、选择区域跳转以及地图点击与拖拽定位等功能,以提供用户友好的地图服务。下面将详细阐述这些知识点: 1. **百度地图API**:百度地图API是百度提供的地图服务接口,...

    百度地图开发AK密钥

    接下来,版本2.0的ak密钥引入了一个新的重大变化,这可能意味着API的重大升级,比如增强了地图渲染效果、增加了更多的地理编码和反向地理编码支持,或者提供了更强大的路线规划功能。使用新版本的密钥,开发者可以...

    百度地图marker动画的实现

    在开发Web应用时,地图组件常常扮演着重要角色,而百度地图API则为开发者提供了丰富的功能,包括在地图上添加标记(marker)。本教程将详细讲解如何利用百度地图API和CSS3来实现marker的动画效果。 首先,让我们...

    百度地图标注,地址解析,反向地址解析,坐标转换

    本主题将详细探讨四个核心概念:百度地图标注、地址解析、反向地址解析和坐标转换,这些都是构建基于位置的应用程序所必需的技术。 首先,我们来理解**百度地图标注**。地图标注是指在地图上添加特定的点、线或面,...

    百度地图离线版Javascript API 2.0版

    百度地图离线版Javascript API 2.0包含了全国8级地图数据,这意味着它覆盖了全国范围内的详细地理信息,从省级区域到更细致的城市、街道级别。这种级别的地图数据足以满足大多数应用场景的需求,无论是开发本地导航...

    百度地图根据坐标查询文字地址

    "百度地图根据坐标查询文字地址"的主题就是关于如何利用百度地图API进行反向地理编码的实践。下面将详细阐述这一知识点。 首先,百度地图提供了一套丰富的API服务,包括地图展示、定位、路线规划、地理编码和反向...

    百度地图——Map

    百度地图API提供了反向和正向地理编码服务,帮助开发者将地址信息与地图上的位置精确对应。 在实际应用开发中,还需要考虑性能优化和用户体验,比如合理缓存地图数据、处理网络延迟、响应式设计等。同时,遵循百度...

    使用html2canvas对有百度地图的Dom元素处理成图片的解决

    问题1:百度地图应用的是瓦片式图片(地图是一张张图片拼出来的),html2canvas 处理时,遇到非同一域名下的图片,浏览器会显示跨域的报错,也无法用反向代理来解决,因为瓦片图片的域名不确定,无法指定 proxy_pass...

    非常棒的百度地图操作.net

    6. **地理编码与反向地理编码**:将地址转换为坐标(地理编码)和将坐标转换为地址(反向地理编码)是百度地图API的常用功能,便于在地图上定位和检索位置信息。 7. **异步调用**:考虑到网络延迟,项目可能采用了...

    百度地图和高德地图Demo

    高德地图API提供了丰富的地理数据和强大的搜索能力,开发者可以利用它实现地点搜索、反向地理编码(根据坐标查找地址)、周边兴趣点查询等功能。 综上所述,这些Demo项目涵盖了地图显示、定位服务、路径规划等核心...

    百度地图完整demo

    本资源名为“百度地图完整demo”,它是一个包含了一系列关于百度地图API示例的压缩包。这个压缩包的核心目标是为开发者提供一个全面了解和学习如何使用百度地图服务的平台,尤其聚焦于地理编码和反地理编码功能。...

    百度地图和谷歌地图互转

    反之,从谷歌地图到百度地图也类似,需要应用反向转换。这通常涉及到数学算法,例如四参数、七参数或更复杂的模型。 2. **API接口**:两个地图服务商都提供了API,允许开发者在应用程序中集成地图服务。百度地图API...

    百度地图poi搜索+自动检索附近地址

    开发者可以通过API获取地图数据、定位、路径规划、地理编码(包括反向地理编码)等功能。 2. **POI(Point of Interest)检索** POI是指地图上的兴趣点,如餐馆、酒店、公交站等。百度地图的POI检索功能允许开发者...

    百度地图调用案例

    在IT行业中,地图API的使用已经成为开发者不可或缺的工具,尤其是像百度地图这样的知名服务。本案例将探讨如何调用百度地图API实现地区三级联动的功能,这对于构建地理信息系统、在线导航或者地点查询应用非常实用。...

    android 百度地图滑动获屏幕中心坐标和显示当前地址信息

    总结来说,Android应用可以通过集成百度地图SDK,监听地图滑动事件获取屏幕中心的经纬度,再通过反向地理编码获取详细地址信息,从而实现动态显示用户当前所在位置的功能。在实际开发中,要确保正确配置权限,合理...

    java 调用百度地图

    在Java开发中,调用百度地图API是一种常见的需求,它涉及到地理位置服务,如地址解析、GPS定位以及地图显示等功能。以下是一些关于如何在Java中使用百度地图API的关键知识点: 1. **百度地图API接入**:首先,你...

    百度地图获取方圆地理位置

    最后,如果需要搜索方圆内的特定地点,如POI(Point of Interest,兴趣点),可以使用百度地图的反向地理编码服务或者周边检索服务。反向地理编码可以将经纬度转换为具体的地址信息,周边检索则可以获取指定范围内的...

Global site tag (gtag.js) - Google Analytics