操作地图和图层

OpenLayers.js 入门教程:打造互动地图的入门指南 戴尬猴,我是德育处主任本文介绍如何使用(后面简称olol是一个开源JavaScript库,可用于在Web页面上创建交互式地图。ol能帮助我们在浏览器轻松地使用地图功能,例如地图缩放、地图拖动、地图标记和地图交互等。本文适合想有JS基础,又想了解ol的工友。⚡️ OpenLayers官网ol使得在任何网页中放置动态地图变得很容易。它可以显示从任何来源加载的地图块、矢量数据和标记。OpenLayers 的开发是为了进一步利用各种地理信息。 阅读详情

1. 遍历地图中的所有图层
    方法MgMap::GetLayers()会返回一个MgLayerCollection对象,这个对象包含了地图中的所图层。MgLayerCollection::GetItem()方法通过图层名称或在MgLayerCollection中的索引编号返回一个单独的MgLayer对象。图层的名称是指定义在地图中的名称,而不是存储在资源库中的图层定义的名称。例如:
    $layer = layers.GetItem(“Roads”);
下面的例子用于列出地图中的所有图层,以及每个图层的可见性设置
    $layers = $map->GetLayers(); // Get layer collection
    echo "<p>Layers:<br />";
    $count = $layers->GetCount();
    for ($i = 0; $i < $count; $i++)
    {
        $layer = $layers->GetItem($i);
        echo $layer->GetName() . ' (' .($layer->GetVisible() ? 'on' : 'off') . ')<br />';
    }
    echo '</p>';

2. 改变图层的属性
    使用方法MgLayer::GetProperty()和MgLayer::SetProperty()可以修改图层的一些属性,例如图层名称、图例标签、图层所在的组等属性。在此,Property代表一个图层某个名称。为了使这些属性生效,你必须保存、重新刷新地图。
下面的例子用于将图层Roads的图例标签在Roads和Streets间切换。
    MgInitializeWebTier ($webconfigFilePath);
    $userInfo = new MgUserInformation($mgSessionId);
    $siteConnection = new MgSiteConnection();
    $siteConnection->Open($userInfo);
    $resourceService = $siteConnection->CreateService(MgServiceType::ResourceService);
    $map = new MgMap();
    $map->Open($resourceService, $mgMapName);
    $layers = $map->GetLayers();
    $roadLayer = $layers->GetItem('Roads');
    $roadLabel = $roadLayer->GetLegendLabel();
    if ($roadLabel == 'Roads')
        $newLabel = 'Streets';
    else
        $newLabel = 'Roads';
    $roadLayer->SetLegendLabel($newLabel);
    // 你必须保存更新后的地图,否则这些改变不会被应用
    $map->Save($resourceService);

3.  改变图层的可见性
    调用方法MgLayer::IsVisible()可以查询图层的实际可见性(Actual Layer Visibility)。但是,没有任何方法可以设置得到图层的实际可见性,因为这取决于我们在前面提到的三个因素。
    调用方法MgLayer::GetVisible()可以获得图层的可见性设置,调用方法MgLayer::SetVisible()可以设置图层的可见性设置。
    调用方法MgGroup::GetVisible()可以获得图层组的可见性设置,调用方法MgGroup::SetVisible()可以设置图层组的可见性设置。
    修改图层定义并修改结果重新保存回资源库,可以改变图层在一个给定的视图比例尺下的可见性。在上一节,我们已经介绍了如何修改修改图层定义。
    下面的例子用来修改图层Roads的可见性设置为可见。
    $layers = $map->GetLayers();
    $roadsLayer = $layers->GetItem('Roads');
    $roadsLayer->SetVisible(True);

4. 给地图添加一个图层
    如果要给地图添加一个图层,首先我们必须创建一个图层对象实例(MgLayer Instance)。那么,如何创建图层对象实例呢?让我们来看看图层类MgLayer的构造函数,它的第一个参数是图层定义的资源Id,第二个参数是资源服务的一个实例。
    MgLayer(MgResourceIdentifier layerDefinition, MgResourceService resourceService);
    所以,在创建一个图层之前,我们必须有一个存储在资源库中的图层定义。
    如果图层定义是像我们在上一节中介绍的那样动态地在内存中创建的,那么我们就需要首先将图层定义存储在资源库中。例如,下面的例子将图层定义存储到会话资源库(session repository),然后给地图添加一个图层,并且返回新建的图层。

    <?php
    require_once('../common/common.php');
    ///////////////////////////////////////////////////////////
    function add_layer_definition_to_map($layerDefinition,
    $layerName, $layerLegendLabel, $mgSessionId, $resourceService, &$map)
    // 将图层定义存储到会话资源库,然后添加图层到地图中,并且返回新建的图层
    {
        // 校验图层定义
        $domDocument = new DOMDocument;
        $domDocument->loadXML($layerDefinition);
        if (! $domDocument->schemaValidate("$schemaDirectory/LayerDefinition-1.3.0.xsd") )
        {
            echo "ERROR: The new XML document is invalid.<BR>/n.";
            return NULL;
        }
        // 将新的图层定义保存到会话资源库(session repository)
        $byteSource = new MgByteSource($layerDefinition, strlen($layerDefinition));
        $byteSource->SetMimeType(MgMimeType::Xml);
        $resourceID = new MgResourceIdentifier(
        "Session:$mgSessionId//$layerName.LayerDefinition");
        $resourceService->SetResource($resourceID, $byteSource->GetReader(), null);
        $newLayer = add_layer_resource_to_map($resourceID,
        $resourceService, $layerName, $layerLegendLabel, $map);
        return $newLayer;
    }

    function add_layer_resource_to_map($layerResourceID,
    $resourceService, $layerName, $layerLegendLabel, &$map)
    // 将图层添加到地图中,并且返回新建的图层
    {
        $newLayer = new MgLayer($layerResourceID, $resourceService);
        $newLayer->SetName($layerName);
        $newLayer->SetVisible(true);
        $newLayer->SetLegendLabel($layerLegendLabel);
        $newLayer->SetDisplayInLegend(true);
        $layerCollection = $map->GetLayers();
        if (! $layerCollection->Contains($layerName) )
        {
            $layerCollection->Insert(0, $newLayer);
        }
        return $newLayer;
    }

    上面的例子中,将图层定义存储在了会话资源库中。这样,它只会影响用户运行时的地图。其他用户是无法看到这个图层的,而且当用户注销退出的时候这个图层也就消失了。如果想让这个图层永久地存储在MapGuide服务器,能够被其他用户看到和使用,那么你需要使用Library将图层定义写入全局资源库,而不是使用会话Id存储在会话资源库。通过下面的代码,你可以将图层永久地存储在MapGuide服务器。
    $byteSource = new MgByteSource($layerDefinition, strlen($layerDefinition));
    $byteSource->SetMimeType(MgMimeType::Xml);
    $resourceId = new MgResourceIdentifier("Library://LayerName.LayerDefinition");
    $resourceService->SetResource($resourceId, $byteSource->GetReader(), null);

5. 将图层加入一个图层组
    下面的函数可以将图层加入一个图层组。
    function add_layer_to_group($layer, $layerGroupName, $layerGroupLegendLabel, &$map)
    // 将图层加入一个图层组。如果图层组不存在,创建这个图层组。
    {
        // 获得图层组
        $layerGroupCollection = $map->GetLayerGroups();
        if ($layerGroupCollection->Contains($layerGroupName))
        {
            $layerGroup = $layerGroupCollection->GetItem($layerGroupName);
        }
        else
        {
            // 如果图层组不存在,创建这个图层组。
            $layerGroup = new MgLayerGroup($layerGroupName);
            $layerGroup->SetVisible(true);
            $layerGroup->SetDisplayInLegend(true);
            $layerGroup->SetLegendLabel($layerGroupLegendLabel);
            $layerGroupCollection->Add($layerGroup);
        }
        // 将图层加入图层组
        $layer->SetGroup($layerGroup);
    }

6. 调整图层的绘图顺序
    通过MgLayerCollection::Add()新加入的图层位于绘图顺序(Drawing Order)最底端,所以它们可能会被上面的图层所遮挡。如果想指定图层在绘图顺序中的位置,你需要使用方法MgLayerCollection::Insert()。例如,下面的代码会将图层加入地图绘图顺序的最顶端。
    $layerCollection = $map->GetLayers();
    $layerCollection-> Insert(0,$layer);

使用QGIS批量打包天地图WFS图层 目标概述 “天地图”(http://www.tianditu.gov.cn)是我国自然资源部直属的国家基础地理信息中心建设的国家地理信息公共服务平台,以多种形式面向社会和公众提供地图与地理信息服务。 除提供常规的瓦片地图服务以外,“天地图”还以WFS(网络要素服务)的形式,提供了一类名为“数据API”的服务(http://lbs.tianditu.gov.cn/data/dataapi.html)。所有支持WFS的GIS客户端都可以打开WFS服务中包含的图层,并像操作本地图层一样操作WFS图层。显然,这也. 阅读详情

相关推荐

ArcEngine C# GIS开发入门作业 (一) Ex01,Ex02 ——地图、图层加载及属性访问

AE C# GIS 设计与开发课程分享(一) Ex01,Ex02 所以这学期在想学习的动力下,刚结束了GIS开发与设计课,简单入门了刚学的C#和ArcEngine,想趁热写点东西记录下来。 写这篇文章: 1.第一,是为了纪念一下我Domen的入门IT的人生重大转折点; 2.第二是为了锻炼一下自己写作的能力; 3.还有因为我为了增加印象我重新整理了一下自己作业的代码花了很多时间不想浪费,直接拿出...

Domen Wang的博客 7473

Openlayer中的Layer图层

获取map中的所有图层 map.getLayers() 获取图层数组 map.getLayers().getArray()

3607

ArcGIS Pro SDK (十四)地图探索 2 地图图层

【代码】ArcGIS Pro SDK (十四)地图探索 2 地图图层。

Winemonk 1001

关于获取图层图例并展示的问题

1.首先是获取图例 this.map.getLayers().forEach(x=>{ let i =[]; i.push( x.label, x.layerInfo.getSource().getLegendUrl() ) legendUrls.push(i) }) 然后是通过使用获取到的图例url加载出图例:获取到的图例是图片形式,因此可以将获取到的url作为< img &g

albatorsss的博客 396

4、地图文档与图层管理操作指南

本文详细介绍了如何使用 Python 的 arcpy.mapping 模块对 ArcMap 中的地图文档和图层进行高效管理。内容涵盖地图范围更改、图层添加与插入、符号系统和属性更新等关键操作,并提供了相应的代码示例及注意事项,有助于提升 GIS 应用中的工作效率。

defi6farmer的博客 60

HT7533与1117稳压芯片动态特性对比:实测分析与优化策略

本文深入对比了HT7533与1117稳压芯片的动态特性,包括电压过冲和瞬态响应能力,并提供了实测数据与优化策略。HT7533适合低功耗设备,而1117在大电流和稳定性要求高的场景表现更优。文章还分享了PCB布局和电容选择的实用建议,帮助工程师根据项目需求选择合适的稳压芯片。

weixin_28454475的博客 610

openlayers动态切换图层

openlayers动态切换图层 通过修改Zindex修改 map.getLayers().array_[0].setZIndex(3); map.getLayers().array_[1].setZIndex(4); 通过修改Zindex修改 map.getLayers().array_[0].setVisible(true); map.getLayers().array_[1].setVisible(false);

zxz_learn的博客 1100

结构设计3D拆件与骨架模型构建实战:基于Creo 8.0的5个高效建模技巧

本文详细解析了基于Creo 8.0的结构设计3D拆件与骨架模型构建实战技巧,涵盖5个高效建模方法,包括参数化驱动、曲面分割、多实体协同设计等。通过骨架模型的智能应用,设计效率可提升30%以上,特别适合复杂产品的结构设计。文章还提供了TWS耳机充电仓等实战案例,帮助工程师快速掌握工业设计中的核心建模技术。

weixin_30000735的博客 571

ArcGIS api for javascript+jquery实现简单的图层控制切换

这一个功能网上有很多版本,快被写烂了。写这篇博客的初衷是给各位不是GIS行业或没有接触过这个东东的猿们一些帮助。或许还有更简单或者相似的希望大家看了之后可以提出来一起讨论。只是很初级的代码,希望各位大大路过轻喷。欢迎交流。话不多说,咱们开始。     首先在已有地图对象及图层的基础上,咱们需要构建一个列表对象来装载我们的每一个图层。现在较简单的一般是使用无序列表元素来构建,当然还有其他方式,在这

WQ的博客 6965

Linux:在使用UEFI固件的计算机上内核是如何被启动的

启动计算机通常不是一件难事:按下电源键,稍等片刻,你就能看到一个登录界面,再输入正确的密码,就可以开启一天的网上冲浪之旅了。但偶尔这件事没那么顺利,有时候迎接你的不是熟悉的登录界面,而是一个令人生畏的命令提示符界面,一闪一闪的提示符告诉你:“你碰到麻烦了”。于是你对着错误提示查找解决方法,按照网页上的步骤,你对着提示符输入并执行了几条你完全不理解的命令,计算机又能正常启动了,但同时你发现你那存有大学舍友糗照的硬盘分区被清空了。

imred的专栏 3068

Aruba CX交换机VSX配置实战:如何避免脑裂导致的网络中断(含详细命令)

本文提供Aruba CX交换机VSX配置的实战指南,重点讲解如何通过构建高可靠的ISL链路聚合与独立隔离的Keepalive链路,有效避免网络脑裂风险。文章包含详细的命令步骤,从基础配置到高级故障排查,帮助网络工程师构建坚如磐石的高可用核心网络,确保业务流量零中断。

weixin_29231725的博客 170

C#操作地图文档和图层

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using ESRI.ArcGIS.Carto; using ESRI

MissZhou要努力 1359

绝缘检测是什么? 绝缘检测原理 绝缘检测检测的是什么?那个量?电压?电流?电阻?

绝缘电阻是电气设备和电气线路最基本的绝缘指标。对于低压电气装置的交接试验,常温下电动机、配电设备和配电线路的绝缘电阻不应低于0.5MΩ(对于运行中的设备和线路,绝缘电阻不应低于1MΩ/kV)。 绝缘电阻的正确测量方法 现代生活日新月异,人们一刻也离不开电。在用电过程中就存在着用电安全问题,在电器设备中,例如电机、电缆、家用电器等。 影响因素 环境温湿度 一般材料的绝缘电阻值随环境温湿度的升高而减小。相对而言,表面电阻(率)对环境湿度比较敏感,而体电阻(率)则对温度较为敏感。 湿度增加,表面泄漏增大,导体电导

dianqicyuyan的博客 2万+

【ArcGIS二次开发】图层和文档操作(包含地图基本操作)

1、向MapControl添加“图层”选项操作 ①设计菜单栏“图层”选项 ②添加“添加ShapeFile图层”代码 private void 添加Shapefile图层ToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog; openFileDialog = new OpenFileDialog(); openFileDialog.Title = "打开shp文件";

网页设计作业、webgis作业承接 3269

Vue3 - 详解实现网站接入钉钉扫码登录功能,钉钉授权生成登录二维码用户用手机扫描二维码登陆,支持弹框式、浏览器单独新开页显示,钉钉扫描二维码登录详细流程及示例代码,最新vue集成钉钉扫码授权登录!

vue3,nuxt3,钉钉,扫码登录,vue3钉钉扫码登陆,钉钉授权第三方WEB网站扫码登录功能,钉钉扫码登录第三方网站,单点登录,二维码不显示,报错,扫了没反应,出错,vue3钉钉扫码登录,内嵌,获取个人信息,pc网页钉钉登录,钉钉扫码登录怎么新开一页,跳页显示二维码,内嵌登录二维码,iframe新页面弹出,弹出一个小窗口显示登录二维码,登录报错,扫码没反应,解决手机点登录报错没反应,官方文档,手机扫描钉钉二维码登录网站,页面弹出一个小窗口而不是打开一个页面,vue3中使用iframe实现另开小窗口扫码登

🏆 前端领域优质创作者 3694

C#与硬件开发入门:从零开始搭建你的第一个硬件项目

《C#硬件开发入门指南》摘要:本文介绍了使用C#进行硬件开发的基础知识,重点讲解了通过串口通信控制硬件设备的实现方法。内容包括:C#硬件开发优势、必备基础知识、环境准备步骤,并提供了一个完整的串口数据读取示例代码。文章还给出了进阶学习建议和常见问题解决方案,帮助开发者快速掌握C#与硬件设备通信的基本技能,为进一步开发物联网、工业控制等应用打下基础。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 973

Arcgis Engine-图层控制与地图操作

基础图层控制 添加图层 /* @path:表示shape文件的文件夹路径 @fileName:表示shape文件的文件名 */ object.AddShapeFile(Path,fileName); 代码示例 string CurrentPath = Directory.GetCurrentDirecoty(); Directory.SetCurrentDirectory(CurrentDirectory + "\\..\\..\\..\\data\\world"); string FilePath

Lineng's blog 2372

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【管理地图文档和图层】学习笔记1

arcgis arcpy

weixin_45187757的博客 843

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【高德地图开放平台 JS API 实战:展示地图与图层的奇妙之旅】

高德地图开放API,JS API(展示地图与展示图层部分)详细使用教程

LCoisini的博客 2230

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python3 arcgis_ArcGIS Python编程案例(3)-管理地图文档和图层

我们将在本章介绍以下案例:引用当前地图文档引用磁盘上的地图文档访问数据框获取地图文档中的图层列表限制图层列表内容更改地图显示范围获取表数据列表向地图文档中添加图层向地图文档中插入图层更新图层符号系统更新图层属性引言ArcPy制图模块是ArcGIS 10新增加的功能模块,该模块提供了相当赞的自动化制图功能,包括管理地图文档和图层文件以及数据。制图模块提供了自动化地图输出和打印功能,可用于创建PDF地...

weixin_42521856的博客 1629

ArcEngine 9.3 学习笔记(四):地图和地图布局(Map对象,FeatureLayer对象,矢量图层操作实例)...

3.1 地图 3.1.1 Map 对象   Map对象:在Map对象上能显示的图形有两类,一类是 地理数据,一类是 元素。  地理数据包括 矢量类型的要素数据、栅格数据、Tin等表面数据等;这些数据都保存在Geodatabase或数据文件如shapefile中,它们是用于GIS分析制图的源数据。  元素,是一种可以显示在Map上的对象,它分为:图形元素和框架元素。图形元素可以显示出来...

技术架构公社 577

openlayers6【十三】地图矢量图层 Vector 详解

文章目录1. 认识什么是矢量地图2. 矢量图层的构成3. 矢量图层的常用参数4. 初始化一个矢量图层5. 总结 1. 认识什么是矢量地图 在 GIS 中,地图一般分为两大类:栅格地图和矢量地图 栅格地图:它们有一个共同特征,就是它们都是由很多个像素组成,像素大小是一致的,行高和列宽是一致的,从这个角度看,一幅遥感影像就像栅格。我们可以把一幅栅格图像考虑为一个矩阵,矩阵中的任一元素对应于图像中的一个点,而相应的值对应于该点的灰度级,数字矩阵中的元素叫做像素。 矢量地图:矢量图使用直线和曲线来描述图形,这些图形

@必意玲 8008

地图集合(Maps)和图层集合(Layers)

访问Maps和Layers 遍历maps和layers Collections Enumerations 创建一个新的图层 使用图层对象的属性 设置一个图层的数据源 上一讲中,我们了解到在ArcMap应用中,Application代表ArcMap,一个Application 有MxDocument组成,一个MxDocument由多个Map组成,一个Map由多个...

weixin_30621919的博客 739

添加地图到图层管理器_使用QGIS批量打包天地图WFS图层

01目标概述“天地图”(http://www.tianditu.gov.cn)是我国自然资源部直属的国家基础地理信息中心建设的国家地理信息公共服务平台,以多种形式面向社会和公众提供地图与地理信息服务。除提供常规的瓦片地图服务以外,“天地图”还以WFS(网络要素服务)的形式,提供了一类名为“数据API”的服务(http://lbs.tianditu.gov.cn/data/dataap...

weixin_39907157的博客 1181
上一篇: 制图图层定义(Drawing Layer Definition)
下一篇: 资源
MapGuide_Inside
博客等级 码龄17年 340粉丝 71原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值