Javascript 是否可以调用GoogleAPI获取地图图像并将图像保存在某个地方

Javascript 是否可以调用GoogleAPI获取地图图像并将图像保存在某个地方,javascript,node.js,google-maps,google-static-maps,google-directions-api,Javascript,Node.js,Google Maps,Google Static Maps,Google Directions Api,我目前正在用html电子邮件发送谷歌地图图像 目前我正在使用它来完成我的任务。我将调用静态映射api,并在图像标记中将图像URL设置为src <img src="https://maps.googleapis.com/maps/api/staticmap?markers=icon:http://mailadapterdev.vanapi.com/static/start.png|13.82,100.54&markers=icon:http://mailadapterdev.vana

我目前正在用html电子邮件发送谷歌地图图像

目前我正在使用它来完成我的任务。我将调用静态映射api,并在图像标记中将图像URL设置为
src

<img src="https://maps.googleapis.com/maps/api/staticmap?markers=icon:http://mailadapterdev.vanapi.com/static/start.png|13.82,100.54&markers=icon:http://mailadapterdev.vanapi.com/static/waypt1.png|13.80,100.54&markers=icon:http://mailadapterdev.vanapi.com/static/waypt2.png|13.81,100.52&markers=icon:http://mailadapterdev.vanapi.com/static/waypt3.png|13.79,100.54&markers=icon:http://mailadapterdev.vanapi.com/static/dest.png|13.79,100.53&path=weight:3|color:blue|enc:cfjsAqvsdRnAMd@MZpDLpATpB?HGLMX?VV`CTjBr@L|ATlDf@hBXGl@CPTDtAR~Et@jF`AnLbBvKdB~@JbAR`BTdDd@pDj@l@H`Cb@vALFOJIr@yCxAgHPYTOREV?N@ZHrIxD|HjD~CxAxAn@j@XHDZy@hAoCdCiG~B{Gj@gBXeALWNU@[A[OWi@m@_@_@i@w@O[o@SSKK?}A]sBy@wBeAvBdArBx@|A\J?JOIsCJgC?[Io@KQ^Nn@TLDUfDC`AFp@RfAj@dAl@p@n@n@DHDN?TC`@IFW^MVYdAKZMb@uBdGaDfIiAnC[x@B@RHpCnAnAh@jChAnVrK|@`@Uh@iChG{D~J}B~Fe@tAq@fCcBfG_ApDMd@AXO`@Q^GCu@S{AAyIByEAaABc@@}A@kACeDImKWcKSmAGgAEoCCqECI?LlCH~DI_EMmCH?|@BdA?lA?nCBfADlAFrDHnEH|ELtIRjAB|AAb@A`ACxE@xICzA@l@Oh@a@p@}BhDoMd@yA~AcE`AiCtDsJhCeGHSHs@b@_Ej@cGbAuJ\mC|@sGb@gENoBF]XkAZuBX}CLoA@CbAJbDXl@Fm@GcDYcAKABMnAOzAI`AKr@_@pBQx@OnBUdCYbCk@tDCR~@VTL~@t@xBz@|GrB`I`CYnA_BpH{A`H&key=MY_API_KEY=400x400" >

在调用静态映射api之前,我将调用 使用lat long并获取多段线,使用从调用方向API获取的多段线,我将调用静态映射API

我的问题是

当路径点数量增加(通常超过5个)时,多段线变得非常大,URL将变长,如果超过2048个字符,我将无法查看地图。谷歌没有将其标识为有效的URL。这是显而易见的

我的问题是

  • 是否有任何方法可以减少部署线的大小
  • 是否有任何方式调用谷歌API,获取图像并将其保存在我的服务器中
  • 如果我能做到第二点,在我的服务器中保存谷歌地图,而不是每次我想要的时候都打电话给谷歌服务器获取图像,这是违法的吗
  • 有没有其他方法可以完成我的任务
  • 我陷入这个问题已经两个多星期了。我几乎什么都试过了。请帮我解决这个问题


    提前谢谢。

    我将回答我自己的问题-仅针对第1部分

    减少多段线大小的一种方法是使用。 要了解它的工作原理,您可以使用

    对于node.js,我使用了和模块来实现这一点

    步骤

  • 使用lat long数据校准,并获得概览多段线
  • 使用
    多段线
    模块对多段线进行解码
  • 使用
    简化路径
    模块简化路径
  • 最后,使用
    polyline
    模块中的encode对第三步中得到的细节进行编码
  • 范例

    var simplify_path = require("simplify-path");
    var polyline      = require("polyline");
    
    var poly_line = "overview polyline from directions API";
    
    var path = polyline.decode(poly_line);
    var tolerance = 10;
    
    path = simplify_path(path, tolerance)
    var new_polyline = polyline.encode(path);
    
    console.log("old_plyline "+JSON.stringify(poly_line));
    console.log("new_polyline "+JSON.stringify(new_polyline));
    
    因此,您将得到一条相对较短的简化部署线


    看起来很简单:D

    我将回答我自己的问题-仅针对第1部分

    减少多段线大小的一种方法是使用。 要了解它的工作原理,您可以使用

    对于node.js,我使用了和模块来实现这一点

    步骤

  • 使用lat long数据校准,并获得概览多段线
  • 使用
    多段线
    模块对多段线进行解码
  • 使用
    简化路径
    模块简化路径
  • 最后,使用
    polyline
    模块中的encode对第三步中得到的细节进行编码
  • 范例

    var simplify_path = require("simplify-path");
    var polyline      = require("polyline");
    
    var poly_line = "overview polyline from directions API";
    
    var path = polyline.decode(poly_line);
    var tolerance = 10;
    
    path = simplify_path(path, tolerance)
    var new_polyline = polyline.encode(path);
    
    console.log("old_plyline "+JSON.stringify(poly_line));
    console.log("new_polyline "+JSON.stringify(new_polyline));
    
    因此,您将得到一条相对较短的简化部署线


    看起来很简单:解决问题2和问题3。无法在服务器上保存映像。这是服务条款所禁止的

    参见ToS第10.1(a)段

    除非通过服务,否则无法访问API或内容。除非通过服务,否则您将无法访问地图API或内容。例如,除“地图API”外,您不得通过接口或通道(包括未记录的Google接口)访问地图分幅或图像


    回答问题2和3。无法在服务器上保存映像。这是服务条款所禁止的

    参见ToS第10.1(a)段

    除非通过服务,否则无法访问API或内容。除非通过服务,否则您将无法访问地图API或内容。例如,除“地图API”外,您不得通过接口或通道(包括未记录的Google接口)访问地图分幅或图像


    我将在线回答您:

  • 是否有办法减小多边形线条的大小?
    是的,谷歌使用编码的多段线,你可以找到创建它们的过程。你也可以找到一个AN,你也可以考虑使用谷歌的库调用它的方法<代码> EnCODPATH()/<代码>。查找参考资料
  • 是否有任何方法可以调用Google API并获取图像并将其保存到我的服务器中。
    ,如

  • 如果我能做到第二点,在我的服务器中保存谷歌地图,而不是每次我想要的时候都打电话给谷歌服务器获取图像,这是违法的吗?
    ,如

  • 是否有其他方法可以完成我的任务。
    ,正如我在回答您的第一个问题时所述,您可以使用

  • 我会回答你:

  • 是否有办法减小多边形线条的大小?
    是的,谷歌使用编码的多段线,你可以找到创建它们的过程。你也可以找到一个AN,你也可以考虑使用谷歌的库调用它的方法<代码> EnCODPATH()/<代码>。查找参考资料
  • 是否有任何方法可以调用Google API并获取图像并将其保存到我的服务器中。
    ,如

  • 如果我能做到第二点,在我的服务器中保存谷歌地图,而不是每次我想要的时候都打电话给谷歌服务器获取图像,这是违法的吗?
    ,如

  • 是否有其他方法可以完成我的任务。
    ,正如我在回答您的第一个问题时所述,您可以使用

  • 如果您在从管线使用
    概述\u多段线
    时仍然需要此功能,我会感到惊讶,您使用的是此功能吗?这一条已经被简化了。如果您在使用路线的
    概述\u多段线时仍然需要这一条,我会感到惊讶,您正在使用的是这一条吗?但在同一节(10.5)中:>您不会预取、缓存、索引或存储任何要在服务外部使用的内容,但是,由于网络延迟,您可能仅为了提高Maps API实施的性能而存储有限数量的内容…但是,在同一节中(10.5