npm 包 graphql-osm 使用教程

GraphQL-OSM 是一个利用 GraphQL 技术实现的 OpenStreetMap 数据库查询工具。它提供了一些方便的 GraphQL 接口,可以帮助我们快速地查询 OSM 数据库中的信息。本文将介绍如何使用 npm 包 graphql-osm,包括安装、示例代码以及使用技巧。

安装

我们可以使用 npm 命令来安装 graphql-osm:

--- ------- -----------

或者在 package.json 中添加依赖:

-
  --------------- -
    -------------- --------
  -
-

使用示例

接下来我们将演示如何使用 graphql-osm 获取 OSM 数据库中的信息。首先我们需要创建一个 GraphQL 客户端,然后使用 GraphQL 查询语句向服务器发送请求,最后得到返回的结果。

创建 GraphQL 客户端

我们可以使用 graphql-osm 包提供的 createClient 函数来创建一个 GraphQL 客户端,代码如下:

----- - ------------ - - -----------------------

----- ------ - --------------
  ---- ------------------------------------------
  -------- ---
---

其中 url 指定 OpenStreetMap 数据库的 URL,headers 指定 HTTP 请求头部的内容,可选。

向服务器发送请求

我们可以使用 GraphQL 查询语句来向服务器发送请求。例如下面的查询语句可以获取一个区域内的所有餐厅:

----- -
  ---------- -------- ------ ------- ------- ----- --------- -------------- -
    --
    ----
  -
-

此代码的查询区域是北京市海淀区,西南角为 (116.31, 39.96),东北角为 (116.51, 40.06)。查询条件是获取所有 amenity=restaurant 的节点。

我们可以使用 client.query 函数向服务器发送请求并解析结果,代码如下:

----- ----- - -
  ----- -
    ---------- -------- ------ ------- ------- ----- --------- -------------- -
      --
      ----
    -
  -
--

--------------------------------- -- -
  --------------------
---

解析结果

GraphQL 的查询结果是一个携带数据的 JSON 对象。我们可以使用 JavaScript 对象的方式来访问查询结果中的数据。例如下面的 JavaScript 代码可以输出所有餐厅的名称:

----- ----- - -
  ----- -
    ---------- -------- ------ ------- ------- ----- --------- -------------- -
      --
      ---- -
        ----
      -
    -
  -
--

--------------------------------- -- -
  ----- ----- - -----------------
  --- ---- - - -- - - ------------- ---- -
    ----- ---- - --------------
    -- ----- -- ---------- -
      -----------------------
    -
  -
---

使用技巧

指定区域

通过指定查询区域,我们可以限制查询的范围。可以使用 bbox 参数来指定查询区域的边界坐标,例如:

----- -
  ---------- -------- ------ ------- ------- ----- --------- -------------- -
    --
    ----
  -
-

过滤条件

我们可以通过查询条件来筛选目标节点。例如下面的查询条件可以获取所有 amenity=restaurant 并且 name 包含 ‘KFC’ 的节点:

----- -
  ---------- -------- ------ ------- ------- ----- --------- ------------- ----- ------- -
    --
    ----
  -
-

查询多种类型的节点

除了查询 node 节点之外,我们还可以查询 wayrelation 节点,例如:

----- -
  ---------- -------- ------ ------- ------- ----- --------- -------------- -
    --
    ----
  -
  --------- -------- ------ ------- ------- ----- --------- ------------ -
    --
    ----
  -
  -------------- -------- ------ ------- ------- ----- ------ -------- ------ ----------- -
    --
    ----
  -
-

查询节点属性

除了查询节点的 id 和 tags 之外,我们还可以查询节点的位置信息、版本信息等属性。例如下面的查询条件可以获取 amenity=restaurant 的节点的位置信息:

----- -
  ---------- -------- ------ ------- ------- ----- --------- -------------- -
    --
    ---
    ---
    -------
  -
-

结论

通过本文的介绍,我们学习了如何使用 npm 包 graphql-osm 完成 OSM 数据库的查询和解析。GraphQL-OSM 提供了一些方便的接口,我们可以通过指定查询区域和查询条件来获取特定类型的节点信息。同时,我们也介绍了一些常见的查询技巧。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60065f8f238a385564ab6f49


猜你喜欢

  • 前端的神器:npm 包 cordova-plugin-google-analytics-ts 使用教程

    前言 在前端开发中,我们时常需要对网站或者 APP 的数据进行统计和分析,其中比较常见的统计工具就是 Google Analytics。 为了方便前端开发者使用 Google Analytics,我们...

    3 年前
  • npm 包 bs-pretty-bytes 使用教程

    在前端开发过程中,经常需要对数据大小进行转换和显示,例如将字节数转换为可读性更好的格式。 bs-pretty-bytes 是一个方便的 npm 包,可以将字节数转换为更易于理解的格式。

    3 年前
  • NPM 包 fastify-hide-powered-by 使用教程

    介绍 Fastify 是一个快速、低开销且可扩展的 Web 框架,现已成为 Node.js 生态系统中受欢迎的选项之一。Fastify 具有高性能和低内存消耗的功能,开发者可以基于其构建出高性能的 W...

    3 年前
  • npm 包 karumanchi 使用教程

    简介 Karumanchi 是一个基于 JavaScript 的算法和数据结构库,该库在大量的算法题集和面试中提供了一个简单的,直观的方法来解决算法问题。Karumanchi 最初是作为书籍《数据结构...

    3 年前
  • npm 包 node-dl-git-repo 使用教程

    什么是 node-dl-git-repo? node-dl-git-repo 是一个基于 node.js 的 npm 包,可以快速、简便地从 Git 仓库下载并解压压缩包。

    3 年前
  • npm 包 react-native-moment-jalaali 使用教程

    如果你在进行 React Native 开发,并需要处理一些关于时间和日期的问题,那么可以考虑使用 npm 包 react-native-moment-jalaali。

    3 年前
  • npm 包 rpscript-api-xlsx 使用教程

    rpscript-api-xlsx 是一个基于 Node.js 的 npm 包,它可以让你在命令行中使用 JavaScript 代码来读写 Excel 文件。这个包非常适合那些需要在自己的应用程序中处...

    3 年前
  • npm 包 @iconfu/svg-sprite-inject 使用教程

    介绍 @iconfu/svg-sprite-inject 是一个使用简单且功能强大的 npm 包,它可以将 SVG 图标注入到 HTML 文档中,实现雪碧图的方式来展示图标。

    3 年前
  • npm包simple-oauth2-facebook使用教程

    如今,社交媒体已经成为人们日常生活中不可或缺的一部分。Facebook是全球最流行的社交媒体平台之一,许多应用程序都需要使用Facebook的API进行登录和数据收集。

    3 年前
  • NPM 包 simple-oauth2-google-plus 使用教程

    在前端开发中,我们经常需要使用一些第三方服务来实现我们的业务需求,例如使用 Google 提供的 OAuth2 授权服务来获取用户的身份认证和权限验证。在 Node.js 环境下使用 OAuth2 授...

    3 年前
  • npm 包 simple-oauth2-github 使用教程

    在前端开发中,OAuth2 是一个非常常见的认证和授权协议。而 simple-oauth2-github 作为一个基于 Node.js 的 npm 包,是一个能够帮助我们快速接入 GitHub OAu...

    3 年前
  • npm 包 react-mentions-exported-utils 使用教程

    1. 背景 react-mentions-exported-utils 是一个用于 React.js 的 npm 包,可以用于在页面元素中实现 @ 提及功能。它提供了一些使用方便的工具函数和组件,可以...

    3 年前
  • npm 包 vue-bulma-datepicker-tt 使用教程

    简介 vue-bulma-datepicker-tt 是一个基于 Vue.js 和 Bulma 的日期选择器组件。它可以快速方便地实现日期选择的功能,同时提供了丰富的选项和样式定制。

    3 年前
  • npm 包 @caldera-labs/processor-ui 使用教程

    简介 @caldera-labs/processor-ui 是一个用于构建面向用户的前端组件的 npm 包。它提供了一些可定制的 UI,帮助你快速构建功能强大、易用且美观的前端应用程序。

    3 年前
  • npm 包 exec-if-updated 使用教程

    简介 随着前端应用越来越庞大,开发效率成为了一种核心竞争力。其中,npm 包的使用对于前端项目来说十分重要,它们可以提供各种各样的功能,如代码分割、数据流管理、UI 组件等,减少重复代码和提高开发效率...

    3 年前
  • npm 包 karma-hint 使用教程

    在前端开发过程中,我们通常会使用一些工具来帮助我们更好地管理代码和进行调试。其中,karma-hint 是一款非常实用的 npm 包,它可以在 Karma 运行期间使用 JSHint 对代码进行语法检...

    3 年前
  • npm 包 ldll 使用教程

    简介 ldll 是一款前端 JavaScript 库,可以用于实现双向链表。通过 ldll 包,我们可以很方便地构建一个数据结构链表,流畅高效地进行操作,并方便地为其定制一些方法。

    3 年前
  • npm包react-accordion-feature使用教程

    React是一个非常流行的JavaScript库,它可以帮助开发者构建高质量的用户界面。在React生态系统中,有很多有用的npm包,其中之一就是react-accordion-feature。

    3 年前
  • npm 包 smappee-nodejs 使用教程

    Smappee 是一款智能家居管理解决方案,它可以监控并管理您家中各种电器的能源消耗情况,帮助您节省用电费用,并减少对环境的损害。而 smappee-nodejs 是一个能够让开发者方便地使用 Sma...

    3 年前
  • npm 包 aquirejs 使用教程

    前言 随着前端技术的不断发展,现在的前端项目变得越来越复杂,对于前端的构建、打包、管理等方面的需求也愈发突出。而 npm,作为当前前端最为流行的包管理工具,为开发者提供了便捷的依赖管理方案。

    3 年前

相关推荐

    暂无文章