zoukankan      html  css  js  c++  java
  • 【地图中心项目】—— 封装基于jquery的插件暴露接口供外部调用

    (function (window, undefined) {
        // JS 加密混淆器 https://www.sojson.com/yasuojs.html
        var Map = function(){
            return new Map.fn.init();
        };
        Map.fn = Map.prototype = {
            checkTokenUrl: "http://192.168.0.154:8899/mapcenter/checkToken",
            featureUrl:  "http://192.168.0.154:8899/mapcenter/wfs/getFeature",
            wktDataQueryUrl: "http://192.168.0.154:8899/mapcenter/data/query",
            add: function () {
                // console.log("add");
            },
            remove: function () {
                // console.log("remove");
            },
            init: function () {
                // console.log("init");
                return this;
            },
    
            //根据图层名称和ID获取wfs数据并赋值给Layer
            /** 九交用法:
             {
                        "analyzeType":"1",
                        "crsCode":"4326",
                        "de9imType":4,
                        "queryWkt":"MULTIPOINT((116.947186 40.498603))",
                        "tableName":"fgstest",
                        "workspace":"ceshi0414fgs",
                        "queryConditions":{"NAME":"七区" }
                    }
    
             模糊查询用法:
             {
                        "tableName":"fgstest",
                        "workspace":"ceshi0414fgs",
                        "queryConditions":{"NAME":"大" }
                    }
             */
    
            //根据图层名称获取全量wfs数据
            getWfsFeaturesForLayer: function(typeName,queryConditions,fun){
                //获取当前地图(屏幕)四个顶点的经纬度
                // var vertices = map.getBounds();
                var data = {
                    "tableName": typeName,
                    "workspace": "ceshi0414fgs",
                    "pageSize" : '-1',
                };
                if(Object.keys(queryConditions).length){
                    data.queryConditions = queryConditions;
                }
                if(Object.keys(wktQueryParams).length){
                    data.queryConditions = Object.assign(data.queryConditions, wktQueryParams);
                }
                $.when(
                    $.ajax({
                        url: this.wfsDataQueryUrl,
                        data: JSON.stringify(data),
                        type: "POST",
                        contentType: "application/json",
                    })
                ).done(function(response){
                    // console.log('response', response)
                    if(response && response.features.length === 0){
                        currentMaplevel = maplevel;
                        conditions = [];
                        wktQueryParams = [];
                        isClearTagInfoFun(true);
                        Map.clearQua();
                        Map.drawWfsLayer(null,null);
                    }else{
                        if(response.features.length && response.features[0].properties.maplevel === '7'){
                            preLayerWlwgPhotoName = response.features[0].properties.phywgname6;
                        }
                        if(typeof fun === 'function'){
                            fun(response, typeName);
                        }
                        Map.budpoint(response);
                    }
                })
            },
    
        };
    
        Map.fn.init.prototype = Map.fn;
    
        //添加扩展(静态、实例)方法【demo】
        //传入{methodName:function(){}}
        Map.extend = Map.fn.extend = function (obj) {
            for (var item in obj) {
                this[item] = obj[item];
            }
        };
    
        //初始化地图可用的全局变量
        var map;
        var phywgdesc;
        var token = "";
        var systemId = "";
    
        //查询条件
        var queryConditions={};
        var navigationControl; //缩放控件对象
        var tagPhotoId; //查询条件所需全局photoid
        var photoid;   //图层id
        var maplevel;  //图层最高等级
        
    
        Map.extend({
            /**
             * @author zy
             * 设置token
             */
            setToken:function(sId,t,fun) {
                systemId = sId;
                token = t;
    
                Map.fn.featureUrl += `?token=${t}&systemId=${sId}`;
                Map.fn.wktDataQueryUrl += `?token=${t}&systemId=${sId}`;
    
                if(fun && typeof fun === 'function'){
                    hanldeRejectFun = fun;
                }
            },
    
            /**
             * @author zyun
             * 初始化地图
             */
            initMap:function(divName){
                Map.createMap(divName);
                Map.setMapEvent();
                Map.addMapControl();
                return map;
            },
    
            /**
             * @author zyun
             * 创建地图
             * 根据不同的层级设置不同的中心点和层级
             */
            createMap: function(divName){
                // console.log(divName, maplevel, photoid)
                map = new BMap.Map(divName,{ enableMapClick: false }); //在百度地图容器中创建一个地图
                var queryCon = {
                    photoid: photoid
                };
            },
    
            /**
             * @author zyun
             * 地图事件设置
             */
            setMapEvent: function(){
                map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
                map.enableScrollWheelZoom(true);//启用地图滚轮放大缩小
                // map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
            },
    
            /**
             * @author ljq
             * 添加地图控件
             */
            addMapControl: function(){
                navigationControl = new BMap.NavigationControl({
                    type : BMAP_NAVIGATION_CONTROL_ZOOM, //缩放控件类型 仅包含缩放按钮
                    anchor : BMAP_ANCHOR_BOTTOM_RIGHT, //右下角
                });
                //向地图中添加缩放控件
                map.addControl(navigationControl);
    
                //向地图中添加比例尺控件
                map.addControl(new BMap.ScaleControl());
            },
    
            /**
             * @author ljq
             * 重置缩放地图控件
             * anchor: 缩放按钮的位置(左上,右上,左下,右下)
             * x:缩放按钮的水平偏移量
             * y:缩放按钮的竖直偏移量
             */
            resetNavigationControl: function(anchor, x, y){
                //移除缩放控件
                map.removeControl(navigationControl);
                navigationControl = new BMap.NavigationControl({
                    type : BMAP_NAVIGATION_CONTROL_ZOOM, //缩放控件类型 仅包含缩放按钮
                    anchor : anchor, //右下角
                    offset : new BMap.Size(x, y) //进一步控制缩放按钮的水平竖直偏移量
                });
                //向地图中添加缩放控件
                map.addControl(navigationControl);
            },
    
    
            /**
             * @author ljq
             * 清除地图图层接口
             */
            clearMap: function() {
                if(polygonData){
                    polygonData.set([]);
                }
                if(markerClusterer){
                    markerClusterer.clearMarkers();
                }
            },
    
            /**
             * @author ljq
             * 清除参数
             */
            clearQua: function(){
                queryConditions = {};
            },
    
            /**
             * @author ljq
             * 防抖函数
             * @param fn:操作函数
             * @param wait:延迟时间
             */
            debounce: function(fn, wait) {
                var timeout = null;
                return function() {
                    if(timeout !== null)   clearTimeout(timeout);
                    timeout = setTimeout(fn, wait);
                }
            },
    
    
        });
    
        window.Map = Map;
    })(window)
    
    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="UTF-8" />
      <title>olmap</title>
      <script type="text/javascript" src="https://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
      <script src="https://api.map.baidu.com/api?v=2.0&ak=自己申请的密钥"></script>
      <script type="text/javascript" src="https://mapv.baidu.com/build/mapv.js"></script>
     <script type="text/javascript" src="http://192.168.0.154:8899/mapcenter/static/js/wicket.js"></script>
    
    <script type="text/javascript" src="mapcenter.js"></script>
    
     
    </head>
    <style>
      html,
      body {
         100%;
        height: 100%;
        margin: 0;
        padding: 0;
        overflow: hidden;
      }
    
      #map {
         100%;
        height: 100%;
        /* height: 400px; */
      }
    </style>
    <body>
    <div>
      <input type="text" id="ipt">
      <div id="map"></div>
      <div id="info"></div>
    <script>
    
      Map.setToken('MyWorkbench','52e7b95a-5686-48d3-aa08-dd8e0734a332);
     
      var map = Map.initMap('map');
      
      Map.clearMap();
    
    </script>
    </body>
    
    </html>
    

    注:转载请注明出处  

    人与人的差距是:每天24小时除了工作和睡觉的8小时,剩下的8小时,你以为别人都和你一样发呆或者刷视频
  • 相关阅读:
    IOS 开发 网络发展史(基础知识)
    加密详解
    IOS对接支付的流程
    App混合开发浅谈
    swift语法100
    2015年最新Android基础入门教程目录第二章:Android UI(User Interface)详解(已完结 40/40)
    2015年最新Android基础入门教程目录第一章:环境搭建与开发相关(已完结 10/10)
    Reactive开发
    tensorflow 安装
    Mask RCNN笔记
  • 原文地址:https://www.cnblogs.com/ljq66/p/15420552.html
Copyright © 2011-2022 走看看