【问题标题】:is it possible to use the google.maps api library on the node.js server side?是否可以在 node.js 服务器端使用 google.maps api 库?
【发布时间】:2013-04-11 18:16:45
【问题描述】:

我正在开发使用 google map version3 api 的 google map 应用程序,特别是 google.maps.geometry.encoding 中的实用方法,例如 decodePath、encodePath、computeDistanceBetween、interpolate,以便计算地点的位置

在第一个版本的网络应用程序中,大部分应用程序逻辑都在网络浏览器上,现在我想将一些逻辑移动到基于 node.js 的服务器上。但是,由于应用程序依赖于 google api,我想知道有没有办法我仍然可以在 node.js 服务器上使用 google map api

提前致谢

【问题讨论】:

  • 有可能吗?可能,有一些工作。你被允许吗?不太可能。阅读服务条款。
  • 谢谢,所以我想我必须自己实现这些实用功能

标签: node.js google-maps-api-3


【解决方案1】:

您可以使用像 node-googlemaps https://github.com/moshen/node-googlemaps 这样已经为您包装了 API 的模块。或者,您可以使用任何可以帮助您发出 API 请求的节点模块:

Mikeal 的请求https://github.com/mikeal/request

休息者https://github.com/danwrong/restler

虽然,我不确定具体的实用方法。

【讨论】:

  • 如何从中获取谷歌地图对象? var GoogleMapsAPI = 要求('googlemaps'); var gmAPI = new GoogleMapsAPI({key: ""});
  • @SanjayKumarNS 我自己对此非常感兴趣;我喜欢使用 new google.maps.LatLng() 之类的东西,因为您获得了 IDE 支持(和强制执行),但我无法找到与 google 文档匹配的节点库。需要的是 google maps api cdn 的同构版本。我可能会尝试自己制作一个,但如果您发现任何有关此的信息,我很乐意听到它。我使用确实匹配的 Typescript 定义,但我实际上不能在 JS 中使用它们 - 它们只能在 JSDocs 中使用。
【解决方案2】:

我没有找到如何在 node.js 中从谷歌地图加载和使用几何库的方法,但我找到了一个小的 npm 模块geolib,它可以进行一些计算。我比较了模块和谷歌地图几何库的结果,它们匹配。我希望你会发现它有用。

【讨论】:

  • 虽然在某些情况下可能是一种解决方法,但这个答案并不能回答 OP 的问题。
  • 你的评论毫无价值。
  • 我添加了评论,因为我对您的回答投了反对票。 OP 的问题特定于 Google JavaScript v3 API,以及他是否可以将该脚本加载到 nodejs 服务器中。您的回答没有提供这样做的方法;作为评论会更好。 StackOverflow 要求人们在投反对票时提供反馈。
  • 清除。作者想要“..将一些逻辑移动到基于 node.js 的服务器”我的回答正是他想要的。
【解决方案3】:

按照这些分步说明进行操作

  1. 在终端npm install @google/maps --save运行此命令

  2. 复制粘贴这段代码

    var googleMapsClient = require('@google/maps').createClient({
      key: xxxxxxxxxx
    });
    
    function getDirections (req, callback)  {
      googleMapsClient.directions({
      origin: req.origin,
      destination: req.destination,
      mode: req.mode,
    
      }, function(err, response) {
        console.log(err);
        console.log(response);
        if (!err) { 
          callback(response);
        };
      });
    };
    
    var inputs = {
      origin: "1600 Amphitheatre Parkway, Mountain View, CA",
      destination: "1 Infinite Loop, Cupertino, CA 95014, USA",
      mode: "driving",
    };
    
    getDirections(inputs, function(result){
      console.log("Response: ", JSON.stringify(JSON.parse(JSON.stringify(result))))
    });
    

进一步阅读 https://github.com/googlemaps/google-maps-services-js

【讨论】:

  • 这个答案没有使用 Google Maps JavaScript API,而是使用了一个单独的 Google 开发的库,它与他们的前端服务不完全兼容。 OP询问如何将前端服务代码加载到nodejs中。我仍在尝试弄清楚如何执行 OP 要求的操作,以便我可以在测试中对其进行模拟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多