【学习记录】使用高德地图API开发一个简单基础的WebGIS系统(GIS考研院校专题地图网站)

这篇具有很好参考价值的文章主要介绍了【学习记录】使用高德地图API开发一个简单基础的WebGIS系统(GIS考研院校专题地图网站)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0. 前言

本人只是一个普普通通的 GIS 学生, 下面是记录我的写的一个作业 demo 的内容, 可能会存在一定的错误, 欢迎在评论区\私信交流!

*完整功能展示看这里 (B站)

*感兴趣可以下载完整 demo 看看 (阿里云盘)

1. 功能设计

本网站(GIS考研院校可视化专题网站)为2022年GIS考研初期准备择校的学生服务,提出以下三个主要功能的设计:

(1)基本功能:如放大、缩小地图、地图图层切换管理功能、地图测量、几何绘图,提供用户基本的地图操作工具,便于用户浏览网站地图内容;

(2)专题数据功能:提供用户提供点击地图交互,可以得到不同院校点的招生信息、招生人数热力图,帮助用户了解自己心怡的考研院校在该省份的竞争能力;

(3)POI检索, 导航规划:通过高德 API 提供用户检索地点以及进行路线规划导航功能,通过用户基本地图浏览功能。(这个功能是老师布置作业要求必须有的).

高德地图gis,学习,javascript

(上面这个图用ProcessOn 一个在线绘图网站画的, 可能会设计得不规范.)

2. 数据处理

通过对研招网进行Python爬虫采集 GIS 考研院校信息数据, 再结合高德地图开放地理编码 API, 以及开源的火星坐标系与 WGS84 坐标系转换 API 形成经纬度坐标数据. 然后通过 QGIS 进行地理数据生成与综合处理形成 GeoJson 文件.

(爬虫方法用的最简单的 request. 由于是一年前大三的时候写作业做的数据, 已经找不到我当时写的代码了.)

总计有以下两个数据内容:

(1)University(.geojson): 我国2022年GIS硕士招生院校点状地理数据;

(2)Details(.geojson): 各个招生院校的不同专业、方向的招生详情文本属性数据.

数据内容存在一点小问题:

① 没有将除了各大高校之外的研究院纳入爬虫范围, 以及没有保存研招网的原网址, 使得后面信息展示时不能实现跳转对应网页的功能;

② 这个数据是很久之前做另一份作业的, 把高德坐标转成了 WGS84, 但是这个网站用的高德地图 API, 所以应该要转回来, 否则加载的数据是存在很大偏移的 (偷懒就没有转了);

③ 由于不会处理 js 引入数据产生的跨域报错问题,所以 json 数据直接用 js 文件的两个变量引入.)

(写到后面发现能使用服务器打开的方式解决数据跨域问题, 如安装一个 Live Server 插件.)

3. 项目结构

(功能很简单, 所以使用原生 JS, 没有用框架来写.)

(1) index.html 项目入口 (页面结构)

主要页面结构:

① 一个放置地图的标签(div 容器)

② 侧边工具栏按钮, 信息卡片(div 容器\ radio 选择框\ input 输入框)

③ 导航信息框 (div 容器, 内容由 API 模板自动填入)

④ POI 搜索框以及搜索\关闭按钮(div 容器)

⑤ POI 搜索结果信息框 (div 容器, 内容由 API 模板自动填入)

页面结构如下图:
高德地图gis,学习,javascript文章来源地址https://www.toymoban.com/news/detail-538069.html

<!-- 地图容器 -->
<div id="container"></div>
<!-- 标题栏 -->
<h3 id="title">GIS考研院校可视化专题网站</h3>
<!-- 侧边栏按钮 -->
<div class="sidebar">
    <div class="tools-button" id="navigationTools_button" title="路线规划导航"></div>
    <div class="tools-button" id="drawTools_button" title="绘图工具"></div>
    <div class="tools-button" id="measureTools_button" title="测量工具"></div>
</div>
<!-- 功能卡片 -->
<div class="input-card">
    <!-- 测量工具相关 -->
    <div class="input-item measureTools">
        <div class="function-name">选择测量方式:</div>
        <input type="radio" name="mouseTools" value="rule"><span class="input-text">距离测量</span>
        <input type="radio" name="mouseTools" value="measureArea"><span class="input-text">面积测量</span>
    </div>
    <div class="input-item measureTools">
        <input id="close-measure" type="button" class="btn" value="关闭" />
    </div>
    <!-- 几何绘制工具相关 -->
    <div class="input-item drawTools">
        <div class="function-name">选择绘图方式:</div>
        <input type="radio" name="mouseTools" value="marker"><span class="input-text"></span>
        <input type="radio" name="mouseTools" value="polyline"><span class="input-text">折线</span>
        <input type="radio" name="mouseTools" value="polygon"><span class="input-text">多边形</span>
    </div>
    <div class="input-item drawTools">
        <input type="radio" name="mouseTools" value="rectangle"><span class="input-text">矩形</span>
        <input type="radio" name="mouseTools" value="circle"><span class="input-text"></span>
    </div>
    <div class="input-item drawTools">
        <input id="clear-draw" type="button" class="btn" value="清除上一个" />
        <input id="clear-all-draw" type="button" class="btn" value="清空" />
        <input id="close-draw" type="button" class="btn" value="结束绘制" />
    </div>
    <!-- 导航工具相关 -->
    <div class="input-item navigationTools">
        <div class="function-name">选择出行方式:</div>
        <input type="radio" name="navigationType" checked="" value="driving"><span class="input-text">驾车</span>
        <input type="radio" name="navigationType" value="transfer"><span class="input-text">公交</span>
        <input type="radio" name="navigationType" value="walking"><span class="input-text">步行</span>

        <div class="function-name">路线最先考虑:</div>
        <input type="radio" name="functionType" checked="" value="0"><span class="input-text">时间最短</span>
        <input type="radio" name="functionType" value="1"><span class="input-text">花费最少</span>
        <input type="radio" name="functionType" value="2"><span class="input-text">距离最短</span>
        <input type="radio" name="functionType" value="3"><span class="input-text">实时路况</span>

        <div class="function-name">输入地点:</div>

        <ul class="input-list">
            <li>
                <div class="nav-text"></div>
                <input type="text" id="startName" placeholder="请输入起点" class="input-search" />
            </li>
            <li>
                <div class="nav-text"></div>
                <input type="text

到了这里,关于【学习记录】使用高德地图API开发一个简单基础的WebGIS系统(GIS考研院校专题地图网站)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 记录下uniapp开发结合webview调用高德地图(路线规划,多路选择,双向通信)

    记录下uniapp开发结合webview调用高德地图(路线规划,多路选择,双向通信)

    uniapp结合webview实现(微信和app上)简单版导航打车应用,总体实现方案是 在uniapp上嵌入web网页,在web网页上调用高德地图api实现渲染地图及路线 去高德开放平台注册账号并创建web应用,再生成web安全密钥和key 如果需要运行到微信上则需要开通微信公众平台上应用需要的定位

    2024年02月19日
    浏览(9)
  • uniapp上高德(百度)地图API的使用(APP安卓)

    uniapp上高德(百度)地图API的使用(APP安卓)

    前言 由于在app中没有document,window等对象,所以使用在pc端传统方法引入的方式,将会发现无法引用成功,会出现白屏现象。 目前有两种解决方式: 使用uniapp的web-view方式(百度地图) 使用renderjs来调用document等js对象(高德地图) map.vue: 中间实时显示地图上图标的个数,以及

    2023年04月10日
    浏览(43)
  • 高德地图的简单使用:点击标记获取经纬度和详细地址

    高德地图的简单使用:点击标记获取经纬度和详细地址

    1. 先进入高德开发平台注册登录 2.进入地图 js Api 按照步骤申请key 3 使用npm安装依赖包 npm i @amap/amap-jsapi-loader --save 4. 高德api 都有说明 下面看下我实现的功能和代码 1. 初始化地图加载地图将自动定位到您所在城市并显示,点击地图实现了打点获取经纬度和详情地址。 2.输入提

    2024年02月12日
    浏览(12)
  • vue对高德地图的简单使用:点击标记并获取经纬度和详细地址

    vue对高德地图的简单使用:点击标记并获取经纬度和详细地址

    目录 第一步:先按部就班,进入高德开放平台,跟着步骤注册账号,创建应用 第二步:用npm下载包,初始化地图 第三步:实现点击地图添加标记 第四步:点击获取详细地址 第五步:搜索获取相关地区提示 第六步:全部代码(把密钥和key替换可直接运行)   高德地图有AP

    2024年02月06日
    浏览(18)
  • 【uniapp】uniapp使用高德地图定位打包成安卓app的一些记录,比如打包后定位失效、

    【uniapp】uniapp使用高德地图定位打包成安卓app的一些记录,比如打包后定位失效、

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 我的项目是uniapp打包成安卓app,这里不会讲解微信小程序之类的踩坑,只记录app端的用法 首先要知道,定位是返回经纬度,地图是渲染页面。这个不能搞混。 在uniapp中有map组件,具体可看官网的文档

    2023年04月16日
    浏览(10)
  • 高德地图js api

    官网:开发 | 高德地图API vue-amap 基于vue的高德地图:组件 | vue-amap 注意事项:地图盒子一定要有宽高!!!!! 在项目中安装 default-passive-events,并引入 main.js 中, 这个包的作用是通过添加 passive,来阻止 touchstart 事件,让页面更加流畅。 事件使用 ***.on(‘事件名比如:(cli

    2024年02月04日
    浏览(11)
  • 前端系列——vue2+高德地图web端开发(使用和引入)

    前端系列——vue2+高德地图web端开发(使用和引入)

    本人非专业前端开发,其实是搞后端的,但是正好接了一个项目需要我负责全栈,所以写了这个系列的文章,如果以后项目可以开源我会放出来的 本次我们要实现的是vue2+高德地图的网页开发 本文需要大家系统学过vue以及初步了解高德地图的情况下理解起来会十分省力 高德

    2024年01月16日
    浏览(24)
  • 记录--在高德地图实现卷帘效果

    记录--在高德地图实现卷帘效果

    今天介绍一个非常简单的入门级小案例,就是地图的卷帘效果实现,各大地图引擎供应商都有相关示例,很奇怪高德居然没有,我看了下文档发现其实也是可以简单实现的,演示代码放到文末。本文用到了图层掩模,即图层遮罩,让图层只在指定范围内显示。 1.创建目标图层

    2024年02月13日
    浏览(11)
  • 高德API JS 高德地图获取多个坐标点的中心点

    高德API JS 高德地图获取多个坐标点的中心点

    我需要: 在地图上展示多个地点 地图缩放到合适的大小,要求刚好能显示全部点位 边缘留有一部分间隔。 做成如图所示这样。 经过一下午的研究,弄出来了。 需要以下这些 AMap 的类库: AMap.Bounds() 区域 AMap.LngLat() 点坐标(基础点位) AMap.setBounds() 设置地图区域,这会自动

    2024年02月07日
    浏览(92)
  • 记录--在高德地图实现流动的线图层

    记录--在高德地图实现流动的线图层

    有朋友反馈说最近分享的内容不太好理解,那么今天来分享个早前开发的图层制作过程,基于GIS数据代码生成流动的车行线,上手很简单。下面我将在实现思路、具体开发、数据来源这几方面逐步讲解,希望读者能从中获取对数据可视化开发的兴趣。文中使用到高德地图JSA

    2024年02月06日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包