【问题标题】:Encoded Polygon limit with Google Maps Image API使用 Google Maps Image API 的编码多边形限制
【发布时间】:2014-02-21 00:07:09
【问题描述】:

我正在尝试使用代表英国地区的多边形的Google Maps Image API 获取图像。由于某种原因,当多边形的坐标太多时,成像不起作用,我不知道为什么。

我使用rails polylines gem 将多边形编码为described here 的url。

伦敦卡姆登的多边形由以下坐标组成:

coords = [[-0.120544, 51.531198], [-0.127403, 51.533038], [-0.12757, 51.544915], [-0.139614, 51.558465], [-0.140785, 51.56867], [-0.172904, 51.574357], [-0.200339, 51.553112], [-0.215729, 51.553112], [-0.210376, 51.545751], [-0.190134, 51.532201], [-0.179428, 51.537889], [-0.172067, 51.536049], [-0.155841, 51.535213], [-0.150655, 51.526012], [-0.135097, 51.517648], [-0.131585, 51.512295], [-0.12389, 51.516979], [-0.114856, 51.516979], [-0.108834, 51.521161]] 

与 gem 一起使用时会产生一个编码字符串:

enc = Polylines::Encoder.encode_points(coords)
-> jpV_uoyHzi@oJ`@giAfjAusAjFw~@tgEqb@njDxcCd_B?m`@~l@q}BtsA{aAqb@_m@nJmdBfDk_@nx@g`Bfs@}Tl`@co@g\\mw@?ud@cY

然后当放在API url doesn't produce a polygon (click here).

但是如果我将坐标切成两半,限制坐标,it does produce a polygon

enc = Polylines::Encoder.encode_points([[51.531198, -0.120544], [51.533038, -0.127403], [51.544915, -0.12757], [51.558465, -0.139614], [51.56867, -0.140785], [51.574357, -0.172904], [51.553112, -0.200339], [51.553112, -0.215729]])
-> _uoyHjpVoJzi@giA`@usAfjAw~@jFqb@tgExcCnjD?d_B

任何想法为什么?我在这个 API 中找不到关于编码多边形的任何记录限制。

【问题讨论】:

    标签: ruby-on-rails google-maps google-maps-api-3 polygons


    【解决方案1】:

    您忘记对编码路径进行 urlencode:

    重要提示:下面对 URL 参数的讨论使用了为清楚起见以转义前的形式给出的示例。 在向 API 发送任何请求之前,其参数应进行正确的 URL 编码。例如,许多参数使用竖线字符 (|) 作为分隔符,在最终 URL 中应编码为 %7C,如本文档顶部的快速示例中所示

    URL 中的 urlencoded 路径:http://maps.googleapis.com/maps/api/staticmap?scale=2&size=1000x1000&sensor=false&path=color:0044ff|weight:1|fillcolor%3ablue|enc:jpV_uoyHzi%40oJ%60%40giAfjAusAjFw~%40tgEqb%40njDxcCd_B%3Fm%60%40~l%40q}BtsA{aAqb%40_m%40nJmdBfDk_%40nx%40g%60Bfs%40}Tl%60%40co%40g\mw%40%3Fud%40cY

    不要因为蓝色背景而感到困惑。您已在 coords 中切换了 lat 和 lng,多边形并未放置在伦敦,它位于索马里和塞舌尔之间的海洋中。

    我猜想要的结果应该是这样的:

    http://maps.googleapis.com/maps/api/staticmap?scale=2&size=1000x1000&sensor=false&style=feature%3Alandscape%7Celement%3Aall%7Csaturation%3A-100%7Clightness%3A65%7Cvisibility%3Aon%7C&style=feature%3Apoi%7Celement%3Aall%7Csaturation%3A-100%7Clightness%3A51%7Cvisibility%3Asimplified%7C&style=feature%3Aroad.highway%7Celement%3Aall%7Csaturation%3A-100%7Cvisibility%3Asimplified%7C&style=feature%3Aroad.arterial%7Celement%3Aall%7Csaturation%3A-100%7Clightness%3A30%7Cvisibility%3Aon%7C&style=feature%3Aroad.local%7Celement%3Aall%7Csaturation%3A-100%7Clightness%3A40%7Cvisibility%3Aon%7C&style=feature%3Atransit%7Celement%3Aall%7Csaturation%3A-100%7Cvisibility%3Asimplified%7C&style=feature%3Aadministrative.province%7Celement%3Aall%7Cvisibility%3Aoff%7C&style=feature%3Awater%7Celement%3Alabels%7Cvisibility%3Aon%7Clightness%3A-25%7Csaturation%3A-100%7C&style=feature%3Awater%7Celement%3Ageometry%7Chue%3A0xffff00%7Clightness%3A-25%7Csaturation%3A-97%7C&path=color%3A0044ff%7Cweight%3A1%7Cfillcolor%3Ablue%7Cenc%3A_uoyHjpVoJzi%40giA%60%40usAfjAw~%40jFqb%40tgExcCnjD%3Fd_B~l%40m%60%40tsAq%7DBqb%40%7BaAnJ_m%40fDmdBnx%40k_%40fs%40g%60Bl%60%40%7DTg%5Cco%40%3Fmw%40cYud%40

    【讨论】:

    • 谢谢,我现在就试试。奇怪的是坐标切换了,但我没有遇到问题,我没有看到索马里的海洋,它向我展示了整个世界。在我问题的第一个静态地图链接中,您看到索马里的海洋了吗?
    • 谢谢!这是 urlencode,真是个愚蠢的错误。并且坐标已切换,但我不知道我是如何在我的问题中的 URL 中获得伦敦的......奇怪。
    • 我在上面添加了真正“干净”的 URL。
    • 谢谢!我认为我设法在我的问题中得到伦敦的原因是因为其中一组坐标实际上是正确的顺序。我在调试时会暂时切换它们以查看它是否有所作为。但我认为它们实际上已经在数据源中切换,我不是 100% 确定,因为我对映射没有那么经验,但你可以在这里看到它们 -> google.com/fusiontables/…
    • KML 是一种用于存储几何数据的标准化格式。在表格内,可以存储复杂的几何图形,而不仅仅是点。 KML 适用于 1. 存储这些数据 2. 导入/导出数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    相关资源
    最近更新 更多