Google Maps Static API无法渲染多边形的最后一条路径

时间:2018-02-02 14:33:01

标签: google-maps google-maps-api-3 google-static-maps

我有一个允许用户在地图中定义某些边界的软件。为了实现这一目标,我使用了GoogleMaps的绘图功能。一旦用户完成绘制边界,我得到并编码存储它的路径。如果我编辑相同的记录,它就完美无缺。边界正确生成。我解码编码路径并将其设置为在地图上生成绘图的边界变量。但是,如果我尝试向Google Maps Static API发送完全相同的路径,则无效。最后一条路径始终为空白。

这是用于使用常规API将编码路径加载到地图中的代码(它正常工作):

let bounds = new google.maps.LatLngBounds();
let decodedArray = google.maps.geometry.encoding.decodePath(EncodedPath);
this.selectedOverlay = new google.maps.Polygon({ paths: decodedArray });

this.selectedOverlay.setMap(this.map);
this.selectedOverlay.getPath().forEach((element: google.maps.LatLng) => {
    bounds.extend(element);
});
this.map.setCenter(bounds.getCenter());

这是常规API生成的地图: enter image description here

这是静态API生成的地图: enter image description here

这是生成地图的网址:

https://maps.googleapis.com/maps/api/staticmap?key=[api_key_here]&size=709x470&path=weight:2|fillcolor:0x00000040|color:0x000000aa|enc:ebxwFnxsbMbGxDpFwPkG{D

如您所见,最后一条路径为空白。我测试了几个不同的多边形,都具有相同的结果!最后一条路径总是空白的......

关于如何解决这个问题的任何想法?

我在这里已经阅读了很多问题,但大多数(如果不是全部)都与双反斜杠相关,这不是我的情况(参见生成的URL)。

谢谢!

1 个答案:

答案 0 :(得分:1)

多边形的边界正好是你给它的路径:

encoded path

如果您希望它包围数组,请创建一个封闭的路径:

https://maps.googleapis.com/maps/api/staticmap?size=709x470&path=weight:2|fillcolor:0x00000040|color:0x000000aa|enc:ebxwFnxsbMbGxDpFwPkG{DiFxP

static map with full path

解决方案是2013年的一个答案:Polygons are not closed

如评论所述,将多边形的第一项添加为最后一项可以解决问题。