返回顶部
首页 > 资讯 > 精选 >如何解析OpenLayers 3加载矢量地图源的问题
  • 118
分享到

如何解析OpenLayers 3加载矢量地图源的问题

2023-06-22 04:06:35 118人浏览 安东尼
摘要

今天就跟大家聊聊有关如何解析OpenLayers 3加载矢量地图源的问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、矢量地图矢量图使用直线和曲线来描述图形,这些图形的

今天就跟大家聊聊有关如何解析OpenLayers 3加载矢量地图源的问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

一、矢量地图

矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。由于矢量图形可通过公式计算获得,所以矢量图形文件体积一般较小。矢量图形最大的优点是无论放大、缩小或旋转等不会失真。在地图中存在着大量的应用,是地图数据中非常重要的组成部分。

为了便于存储,传递,使用,矢量地图会按照一定的格式来表达,比如常见的GeoJSONTopojsONGMLKMLShapeFile等等。 除了最后一个ShapeFile,其他几个格式的矢量地图OpenLayers 3都支持。

二、使用GeoJson格式加载矢量地图

项目结构

如何解析OpenLayers 3加载矢量地图源的问题

map.geojson

如何解析OpenLayers 3加载矢量地图源的问题

{"type":"FeatureCollection","features":[{"type":"Feature","properties":{},"geometry":{"type":"PolyGon","coordinates":[[[104.08859252929688,30.738294707383368],[104.18060302734375,30.691068801620155],[104.22042846679688,30.739475058679485],[104.08859252929688,30.738294707383368]]]}},{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[104.08859252929688,30.52323029223123],[104.08309936523438,30.359841397025537],[104.1998291015625,30.519681272749402],[104.08859252929688,30.52323029223123]]]}},{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[103.70269775390624,30.675715404167743],[103.69308471679688,30.51494904517773],[103.83316040039062,30.51494904517773],[103.86474609375,30.682801890953776],[103.70269775390624,30.675715404167743]]]}}]}

map.html

<!Doctype html><html xmlns='Http://www.w3.org/1999/xhtml'><head>    <meta http-equiv='Content-Type' content='text/html;charset=utf-8'>    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>    <meta content='always' name='referrer'>    <title>OpenLayers 3 :加载矢量地图</title>    <link href='ol.CSS ' rel='stylesheet' type='text/css'/>    <script type='text/javascript' src='ol.js' charset='utf-8'></script></head><body><div id='map' style='width: 1000px;height: 800px;margin: auto'></div><script>        new ol.Map({        // 设置地图图层        layers: [            //创建一个使用Open Street Map地图源的图层            new ol.layer.Tile({                source: new ol.source.OSM()            }),            //加载一个geojson的矢量地图            new ol.layer.Vector({                source: new ol.source.Vector({                    url: 'geojson/map.geojson',     // 地图来源                    fORMat: new ol.format.GeoJSON()    // 解析矢量地图的格式化类                })            })        ],        // 设置显示地图的视图        view: new ol.View({            center: [104,30],       // 设置地图显示中心于经度104度,纬度30度处            zoom: 10,           // 设置地图显示层级为10            projection: 'EPSG:4326'     //设置投影        }),        // 让id为map的div作为地图的容器        target: 'map'    })</script></body></html>

运行结果

如何解析OpenLayers 3加载矢量地图源的问题

三、获取矢量地图上的所有Feature,并设置样式

map2.html

<!Doctype html><html xmlns='http://www.w3.org/1999/xhtml'><head>    <meta http-equiv='Content-Type' content='text/html;charset=utf-8'>    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>    <meta content='always' name='referrer'>    <title>OpenLayers 3 :获取矢量地图上的所有Feature,并设置样式</title>    <link href='ol.css ' rel='stylesheet' type='text/css'/>    <script type='text/javascript' src='ol.js' charset='utf-8'></script></head><body><div id='map' style='width: 800px;height:500px;margin: auto'></div><br><div style='width: 800px;margin: auto'>    <button type="button" onclick = 'updateStyle()' >修改Feature样式</button></div><script>        var map = new ol.Map({        // 设置地图图层        layers: [            //创建一个使用Open Street Map地图源的图层            new ol.layer.Tile({                source: new ol.source.OSM()            }),        ],        // 设置显示地图的视图        view: new ol.View({            center: [104,30],       // 设置地图显示中心于经度104度,纬度30度处            zoom: 10,           // 设置地图显示层级为10            projection: 'EPSG:4326'     //设置投影        }),        // 让id为map的div作为地图的容器        target: 'map'    });    //创建一个矢量地图源图层,并设置样式    var  vectorLayer =  new ol.layer.Vector({            source: new ol.source.Vector({                url: 'geojson/map.geojson',     // 地图来源                format: new ol.format.GeoJSON()    // 解析矢量地图的格式化类            }),            // 设置样式,颜色为绿色,线条粗细为1个像素            style: new ol.style.Style({                stroke: new ol.style.Stroke({                    color: 'green',                    size: 1                 })            })        });    map.addLayer(vectorLayer);        function updateStyle(){        //创建样式,颜色为红色,线条粗细为3个像素        var  featureStyle = new ol.style.Style({            stroke: new ol.style.Stroke({                color: 'red',                size: 3            })        })        //获取矢量图层上所有的Feature        var features =  vectorLayer.getSource().getFeatures()        //遍历所有的Feature,并为每个Feature设置样式        for (var i = 0;i<features.length;i++){            features[i].setStyle(featureStyle)        }    }</script></body></html>

运行结果

如何解析OpenLayers 3加载矢量地图源的问题

如何解析OpenLayers 3加载矢量地图源的问题

矢量地图坐标系转换

矢量地图用的是EPSG:4326,我们可以通过OpenLayers 3内置了地图格式解析器,将坐标转换为EPSG:3857

map3.html

<!Doctype html><html xmlns='http://www.w3.org/1999/xhtml'><head>    <meta http-equiv='Content-Type' content='text/html;charset=utf-8'>    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>    <meta content='always' name='referrer'>    <title>OpenLayers 3 :矢量地图坐标系转换</title>    <link href='ol.css ' rel='stylesheet' type='text/css'/>    <script type='text/javascript' src='ol.js' charset='utf-8'></script>    <script src="Jquery-3.6.0.js"></script></head><body><div id='map' style='width: 1000px;height: 800px;margin: auto'></div><script>        var map = new ol.Map({        // 设置地图图层        layers: [            //创建一个使用Open Street Map地图源的图层            new ol.layer.Tile({                source: new ol.source.OSM()            })        ],        // 设置显示地图的视图        view: new ol.View({            center: ol.proj.fromLonLat([104,30]),       // 设置地图显示中心于经度104度,纬度30度处            zoom: 10,           // 设置地图显示层级为10        }),        // 让id为map的div作为地图的容器        target: 'map'    });    // 加载矢量地图    function addGeoJSON(data) {        var layer = new ol.layer.Vector({            source: new ol.source.Vector({                features: (new ol.format.GeoJSON()).readFeatures(data, {     // 用readFeatures方法可以自定义坐标系                    dataProjection: 'EPSG:4326',                            // 设定JSON数据使用的坐标系                    featureProjection: 'EPSG:3857'                          // 设定当前地图使用的feature的坐标系                })            })        });        map.addLayer(layer);    };    $.ajax({        url: 'geojson/map.geojson',        success: function(data, status) {            // 成功获取到数据内容后,调用方法将矢量地图添加到地图            addGeoJSON(data);        }    });</script></body></html>

运行结果

如何解析OpenLayers 3加载矢量地图源的问题

看完上述内容,你们对如何解析OpenLayers 3加载矢量地图源的问题有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: 如何解析OpenLayers 3加载矢量地图源的问题

本文链接: https://lsjlt.com/news/302564.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何解析OpenLayers 3加载矢量地图源的问题
    今天就跟大家聊聊有关如何解析OpenLayers 3加载矢量地图源的问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、矢量地图矢量图使用直线和曲线来描述图形,这些图形的...
    99+
    2023-06-22
  • 解析OpenLayers3加载矢量地图源的问题
    一、矢量地图 矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。由于矢量图形可通过公式计算获得,所以矢量图形文件...
    99+
    2024-04-02
  • vue3如何加载本地图片等静态资源浅析
    目录背景将资源引入为 URLnew URL(url, import.meta.url)结尾背景 在我们用 vue2 + webpack 的时候,加载图片资源是这样用的: <im...
    99+
    2023-05-15
    vue 加载本地图片 vue加载本地图片 vue3加载静态资源
  • 如何解决layer图标icon不加载的问题
    这篇文章将为大家详细讲解有关如何解决layer图标icon不加载的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。之前在项目中使用layer弹框感觉体验很好,这次的项目...
    99+
    2024-04-02
  • 如何解决预加载InstantClick的问题
    这篇文章主要介绍如何解决预加载InstantClick的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在改造的时候代码高亮没法执行,准确的说是只执行一次,第二次就不执行了。所以发...
    99+
    2024-04-02
  • 如何解决springMVC跳转js、css图片等静态资源无法加载的问题
    这篇文章将为大家详细讲解有关如何解决springMVC跳转js、css图片等静态资源无法加载的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。web.xml中servlet> <s...
    99+
    2023-05-31
    springmvc js css
  • Android位图(图片)加载引入的内存溢出问题详细解析
    目录1.一些定义什么是内存泄露?什么是位图?2.原理分析2.1 原理分析一2.2 原理分析二3 编程中如何避免图片加载的OOM错误3.1 利用BitmapFactory.decode...
    99+
    2022-12-26
    android 内存溢出 android位图加载引入 android导入图片
  • 如何解决Android中Glide与CircleImageView加载圆形图片的问题
    这篇文章将为大家详细讲解有关如何解决Android中Glide与CircleImageView加载圆形图片的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 不使用占位符注释掉这两句代码即可。.pl...
    99+
    2023-05-30
    glide
  • 如何解决vue的v-for循环中图片加载路径问题
    这篇文章将为大家详细讲解有关如何解决vue的v-for循环中图片加载路径问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先看一下产品需求,如下图所示,产品要求图片和它的...
    99+
    2024-04-02
  • 如何解决vue页面加载闪烁的问题
    这篇文章主要介绍了如何解决vue页面加载闪烁的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。v-if 和 v-show 的区别v-if只...
    99+
    2024-04-02
  • 如何解决.cuda()加载用时很长的问题
    方法一: pip install --upgrade --force-reinstall http://download.pytorch.org/whl/cu80/torch-0...
    99+
    2024-04-02
  • 如何解决ionic和angular上拉加载的问题
    这篇文章主要介绍了如何解决ionic和angular上拉加载的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。说到ionic上拉加载就跟p...
    99+
    2024-04-02
  • Java IDE中的路径加载问题如何解决?
    Java是一种面向对象、跨平台的编程语言,而Java开发环境(IDE)是开发者开发Java程序的必备工具之一。然而,当我们在IDE中开发Java程序时,常常会遇到路径加载问题,这会使得程序无法正常运行。本文将介绍Java IDE中常见的路...
    99+
    2023-07-23
    ide path load
  • PHP在Linux中的加载问题该如何解决?
    PHP作为一门流行的编程语言,已经成为了许多网站和应用程序的首选语言。在Linux操作系统中,PHP的加载问题是一个常见的挑战。在本文中,我们将探讨PHP在Linux中的加载问题,并提供一些解决方法。 PHP加载问题的原因 在Linu...
    99+
    2023-11-04
    load linux linux
  • MUI如何解决动态列表页图片懒加载再次加载不成功的bug问题
    这篇文章给大家分享的是有关MUI如何解决动态列表页图片懒加载再次加载不成功的bug问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首次加载时图片可以获取成功,再次加载失败,通过...
    99+
    2024-04-02
  • 如何使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题
    这篇文章给大家分享的是有关如何使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在项目中用ajax异步获取数据后有时会因为数...
    99+
    2024-04-02
  • 如何解决ASP IDE打包加载时的卡顿问题?
    ASP(Active Server Pages)是一种Web服务器端脚本语言,由于其易于学习和使用,已经成为了Web开发的重要组成部分。ASP IDE(Integrated Development Environment)是一种集成开发环境...
    99+
    2023-08-21
    ide load 打包
  • 如何解决Golang库插件注册加载机制的问题
    这篇文章主要介绍如何解决Golang库插件注册加载机制的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!最近看到一个内部项目的插件加载机制,非常赞。当然这里说的插件并不是指的golang原生的可以在buildmod...
    99+
    2023-06-29
  • Java的大数据处理,如何解决对象的加载问题?
    随着大数据时代的到来,数据量的爆炸式增长,对于Java开发人员来说,如何高效地处理大数据成为了一个重要的问题。在处理大数据时,Java中的对象加载问题是一个非常关键的问题。在这篇文章中,我们将探讨Java的大数据处理中对象加载的问题,以及...
    99+
    2023-08-16
    大数据 对象 load
  • 如何解决Win7任务栏电源图标不显示的问题
    带着笔记本电脑出门虽然方便,但总是担心用到一半会没电,所以需要不时的关注一下剩余电量。偶然一次发现Win7任务栏右下角通知区域里的电池状态图标不见了,完全不知道电量用到什么程度,太没安全感。可是打开Win7通知区域图标管...
    99+
    2023-05-26
    Win7 电源 任务 图标 问题
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作