Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 1119|回复: 0

【Openlayers】OL中加载矢量切片,可有效解决大数据量的问题

[复制链接]
  • TA的每日心情
    奋斗
    5 小时前
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-5-29 11:18:06 | 显示全部楼层 |阅读模式

    1.首先我们对矢量数据进行切片 可使用tilestache 

    win7下使用TileStache生成geojson格式的Tiles

    这个是预先切好的数据
    也可以实时去获取切片数据(使用OL-- utfgrid)详见http://blog.perrygeo.net/2012/02 ... ers-and-tilestache/

    2.下面讲下在Openlayers中如何加载预先切好的数据

      添加OL的策略拓展文件 OpenLayers.Strategy.Grid.js

    加载图层:

    var style = new OpenLayers.Style();
              var ruleAmenity = new OpenLayers.Rule({
                   symbolizer: {fillColor: 'none', strokeOpacity: 0, pointerEvents: 'all'}
               });
             
               style.addRules([ruleAmenity]);
              var styleMap = new OpenLayers.StyleMap({
                  'default': style,
                  'select': new OpenLayers.Style({
                      strokeWidth: 5,
                      strokeColor: "blue",
                      strokeOpacity: 1
                  })
              });
            var baseName = "http://localhost/basicmap/data/${z}/${x}/${y}";
            format = new OpenLayers.Format.GeoJSON();
            strategy = new OpenLayers.Strategy.Grid();
            protocol = new OpenLayers.Protocol.HTTP({
                url: baseName + ".geojson",
                format: format
            });
            vectors = new OpenLayers.Layer.Vector("Vector", {
                strategies: [strategy],
                protocol: protocol,
                styleMap:styleMap,
                projection: new OpenLayers.Projection("EPSG:4326")
            });
        this.map.addLayer(vectors);
        var options = {
                   hover: true
               };
               var select = new OpenLayers.Control.SelectFeature(vectors, options);
               this.map.addControl(select);
               select.activate();
    下面说下要注意的几点:
    1.默认下tilestache切出的数据是按EPSG:900913投影切的
      所以我这里的map也是EPSG:900913投影
        var mapOptions = {
            maxExtent : new OpenLayers.Bounds(-20037508.3427892, -20037508.3427892,
            20037508.3427892, 20037508.3427892),
            numZoomLevels : 19,
            maxResolution : 156543.0339,
             controls: [],
            units : 'm',
            projection : "EPSG:900913",
            displayProjection : new OpenLayers.Projection("EPSG:4326"),
            theme : 'css/OlTheme/default/style.css'
             };
        this.map = new OpenLayers.Map('map', mapOptions);

    加载geojson切片:

    可以看下这切数据

     

     

    鼠标移到图标上时高亮(图标是后台geoserver渲染的):

     

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-11-24 21:13 , Processed in 2.078192 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表