如何利用高德地图URI加载区域边界

高德URI

以下是高德地图API官网中URI API以及行政区查询的相关页面展示。在行政区域查询中对相应的参数也有详细的描述。
高德地图
在这里插入图片描述
利用URI API进行调用的实例:在返回的数据中districts中包含了相应区域的坐标,中心位置等信息。
在这里插入图片描述

在地图上加载相应的边界

如何利用高德地图 URI API获取的行政区域数据,在地图上加载相应的边界呢?首先要根据返回的数据,获取坐标点集数据。但是需要对数据进行相应的处理。
因为从高德地图API获取的数据,不同的地理块按照 | 划分,块里面的地理信息按照 ; 划分,经纬度信息按照 , 划分,因此对于获取到的数据需要进行三次分割处理。并且对于不同的块,都需要添加一个Polygon才能正确完整的绘制。示例代码如下,根据所要获取的行政区名调用addLayerByGaode函数,解析、分割相应的数据,进行行政边界绘制。

 function addPolygon(data){
            				 //console.log(data);
            				 var searchSource = globalMa.searchLayer.getSource();
     						var targetArr = new Array();
     						$.each(data,function(index,obj){
     							var Data_Div3 = obj.split(',');
     							var newArr = new Array();
     							var transArr=(proj4('EPSG:4326','EPSG:3857',[Data_Div3[0],Data_Div3[1]]));
     							newArr.push(transArr[0]);
     							newArr.push(transArr[1]);
     							targetArr.push(newArr);
     						})

     						if(targetArr.length>0){
     							var polygonArr = new Array();
         						polygonArr.push(targetArr);

         						var myPolygon = new ol.geom.Polygon(polygonArr);
         						var feature = new ol.Feature(myPolygon);
         						//添加相应的图层
         						searchSource.addFeature(feature);
     						}
            			 }
            			 
            			 function addLayerByGaode(name){
            				 //console.log(name);
            				 var searchLayer = new ol.layer.Vector({
      							source:new ol.source.Vector({}),
      							style:new ol.style.Style({
      								stroke:new ol.style.Stroke({
      									color:'rgb(255,0,0)',
      									width:2
      								})
      							}),
      							visible:true,
      							zIndex: 10
      						});
            				 searchLayer.set('name',name);
                 			 map.addLayer(searchLayer);
                 			globalMa.searchLayer=searchLayer;
                 			 
            				 $.ajax({
            					 url:'https://restapi.amap.com/v3/config/district?key=你申请的key值&&keywords='+`${name}`+'&subdistrict=0&extensions=all',
            					 type:'GET',
            					 dataType:"json",
            					 success:function(res){
            						 var areaCenter = res.districts[0].center.split(",");
            						 areaCenter = proj4('EPSG:4326','EPSG:3857',[areaCenter[0],areaCenter[1]]);
            						 
            						 map.getView().setCenter(areaCenter);
            						 //获取相应的边界的坐标
            						 var Data = res.districts[0].polyline;

            						 //对结果进行第一次分割,按照|符号  因为从高德地图API获取的数据,不同的地理块按照|分,块里面的地理信息按照;分,经纬度按照,分,因此对于获取到的数据需要进行三次处理
            						 var Data_Div1 = Data.split('|');
            						 //console.log(Data_Div1);
            						 
            						 var Data_Div2 = new Array();
	           						 for(var i=0;i<Data_Div1.length;i++){
	           							 Data_Div2 = Data_Div1[i].split(';');
	           							addPolygon(Data_Div2);
	           						 }
            					 },
            					 error:function(){
            						 console.log('获取出错');
            					 }
            				 })
            			 }

结果图:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值