使用“PolyUtil.encode()”在 Google 地图上保存重要的多边形是否安全?

waj*_*jih 4 encoding google-maps polygon

我正在使用地图应用程序,该应用程序的功能之一是允许用户在地图上绘制多边形以执行特定任务。

Polygon将保存在我们的服务器上以供以后使用。

我设法对点进行编码并生成编码的字符串路径,以减少在服务器之间存储和传输多边形的大小。

String path = PolyUtil.encode(latLngs); // Android
Run Code Online (Sandbox Code Playgroud)

但我在谷歌开发者网站上读到:

折线编码是一种有损压缩算法,允许您将一系列坐标存储为单个字符串。点坐标使用有符号值进行编码。如果您只有几个静态点,您可能还希望使用交互式折线编码实用程序。

读到这篇文章时我感到震惊:(因为我encodedPath在多个应用程序中使用。有损压缩是什么意思?

那么使用这种类型来存储用户的多边形是否安全?

decode我的意思是:每个字符串encoded都会产生相同的点,这是真的吗?

或者最好将其存储polygon在服务器上作为多点?

谢谢你的帮助。

ant*_*nio 6

如果您查看Google Maps Android API 实用程序库encode中用于编码纬度/经度序列的方法,您会发现它四舍五入到小数点后第五位:

long lat = Math.round(point.latitude * 1e5);
long lng = Math.round(point.longitude * 1e5);
Run Code Online (Sandbox Code Playgroud)

根据维基百科,0.00001 进制度数相当于赤道上的 1.1132 米。

无论如何,请考虑到这就是现在的行为,并且它对您来说是透明的,因此您可能不会注意到实现是否发生变化以允许更高的精度,或者精度是否被更截断。因此,如果坐标的精度对您很重要,您可能希望将坐标存储为系统上的点列表。