zoukankan      html  css  js  c++  java
  • 实现离线地图行政区域划分

    本文主要介绍如何从baiduMap上将行政区域边界经纬度下载下来,制作成一个.geojson文件,以利用openlayer3加载在离线地图中。

    最终目的的效果图(永州市下属11个县区行政区域划分,图片转自csdn的我的原博,已弃csdn,转博客园):

    第一步:js实现文件写出(之前随笔中有源码),函数名为writeText(filename,content)。

    第二步:加载百度地图在线api,实现百度地图界面显示。

     function initialize() {  
            var myLatLng = new google.maps.LatLng(37,104);//设置地图默认中心  
            var myOptions = {  
                zoom : 4,  //地图默认图层
                center : myLatLng,  
                mapTypeId : google.maps.MapTypeId.ROADMAP  //地图类型,raodMap为街区图
            };  
      
            map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);//地图加载在id为map_canvas的div中  
              
        }

    第三步:获取行政区域经纬度。

    var bdary = new BMap.Boundary();  
                var name = document.getElementById("districtName").value;//在id为districtName的input中输入想要获取的行政区域,例如:永州   
            //定义多边形作为边界
            bdary.get(name, function(rs) { 
            points = rs; //获取行政区域  
                var rslength = rs.boundaries.length;  //获取有多少个同名的行政区域(通常为1)
                
                var content = '{"type":"FeatureCollection","features":[{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[';//.geojson文件格式
                for (i = 0; i < rslength; i++) {  
                    var triangleCoords = [];  
                    var temp = rs.boundaries[i];  //获取一个行政区
                    var latLngs = temp.split(";");  
                 
                    for (j = 1; j < latLngs.length - 1; j++) {  
                        var postion = latLngs[j].indexOf(",");  
                        var lat = parseFloat(latLngs[j].substr(0, postion));//经度  
                        var lng = parseFloat(latLngs[j].substr(postion + 1));//纬度  
                        //加入经纬度  
                        triangleCoords.push(new google.maps.LatLng(lng, lat));
                        content = content + "["+lat+","+lng+"],";
                                              
                    }  
                    content = content.subtring(0,content.length-1);//去掉最后一个不需要的逗号
                    content = content + "]]}}]}";//形成一个完整的.geojson格式
                    writeText("d://"+document.getElementById("districtName2").value+".geojson",content);//将文件写出}
  • 相关阅读:
    Linux学习——操作文件与目录
    链表去重
    Android主题换肤 无缝切换
    android 换肤模式总结
    NotificationListenerService不能监听到通知
    判断app是否在后台
    模拟接听电话的方法,兼容华为android5.0以上设备
    Windows下安装破解JIRA6.3.6
    一些as的配置
    Android BLE开发——Android手机与BLE终端通信初识
  • 原文地址:https://www.cnblogs.com/yxth/p/6495134.html
Copyright © 2011-2022 走看看