基本信息
源码名称:WebGis java示例源码
源码大小:19.22M
文件格式:.zip
开发语言:Java
更新时间:2021-06-02
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍


实现功能:在线瓦片地图(Google、百度、高德、天地图)、离线瓦片地图(MBTile数据库、百度瓦片缓存、Arcgis瓦片)、本地瓦片缓存服务(支持4-14级缩放)、地图测距、地图面积测量、矩形选择、圆形选择、自定义点对象标注点、标注点事件、标图绘制(折线、多边型绘制、圆等)、最大化窗口、鹰眼图


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //获取浏览器传递参数值
        String tile_column = request.getParameter("X");
        String tile_row = request.getParameter("Y");
        String zoom_level = request.getParameter("L");
        String mapname = request.getParameter("T");
        if(Integer.parseInt(zoom_level)>18){
        zoom_level="18";
        }
        if(Integer.parseInt(zoom_level)<4){
        zoom_level="4";
        }
        //判断sqlite连接引擎是否存在
        try {
            Class.forName("org.sqlite.JDBC");
        } catch (ClassNotFoundException e) {
            // e.printStackTrace();  
            System.out.println("数据库驱动未找到!");
        }

        Connection conn;        
        try {
            //conurl:获取mbtiles文件地址
            //String conurl = "jdbc:sqlite:i:\\MBTiles" mapname "\\" zoom_level ".mbtiles";
        String conurl = "jdbc:sqlite:i:\\MBTiles\\"  zoom_level ".mbtiles";
        //String conurl = "jdbc:sqlite:f:\\Gis\\"   "4-10.mbtiles";
            conn = DriverManager.getConnection(conurl, null, null);
            // 设置自动提交为false  
            conn.setAutoCommit(false);  
            Statement stmt = conn.createStatement(); 
            //判断表是否存在  
            ResultSet rsTables = conn.getMetaData().getTables(null, null, "tiles", null);  
            if(!rsTables.next()){  
                System.out.println("表不存在");  
            }
            // 得到结果集  
            String sql = "SELECT * FROM tiles WHERE zoom_level = " zoom_level   
                    " AND tile_column = " tile_column   
                    " AND tile_row = " tile_row;  
            ResultSet rs = stmt.executeQuery(sql);
            if(rs.next()) {
                byte[] imgByte = (byte[]) rs.getObject("tile_data");  
                InputStream is = new ByteArrayInputStream(imgByte);  
                OutputStream os = response.getOutputStream();  
                try {  
                    int count = 0;  
                    byte[] buffer = new byte[256 * 256];  
                    while ((count = is.read(buffer)) != -1) {  
                        os.write(buffer, 0, count);  
                    }  
                    os.flush();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                } finally {  
                    os.close();  
                    is.close();  
                }  
            }  
            else{  
                System.out.println(sql);  
                System.out.println("未找到图片!");  
            }  
            rs.close();  
            conn.close();  
        } catch (SQLException ex) {
            System.out.println("SQL异常!");
            Logger.getLogger(MBTilesServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
    }