我有一张地图,用户可以在其中绘制折线,对其进行编码,然后将其保存到 mySQL 数据库中。然后,还有另一个地图从数据库中查询编码字符串,解码折线并将其显示在地图上。
我正在使用encodePath()
几何库中的函数,如下所示:
if(overlayType == 'POLYGON'){
newPolygonOverlay = overlaysArray[0]; //only one overlay
newPolygonPath = newPolygonOverlay.getPath(); //get the path
newPolygonPathCoordsStr = google.maps.geometry.encoding.encodePath(newPolygonPath); //encode it
此代码生成如下字符串:
wwzhBz~|gP~mhMygvCt`cDjgiH{ohIf{fA
然后我继续使用mediumtext类型将此字符串存储在 mySQL DB 中。
第二张地图,查询数据库以获取编码的折线字符串,这与我最初保存的完全相同。
然后我使用几何库中的解码函数解码字符串并创建折线,如下所示:
var array = google.maps.geometry.encoding.decodePath(str); //str contains the encoded string from the db
var levels = decodeLevels("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB");
var Poly = new google.maps.Polyline({
path: array,
levels: levels,
strokeColor: '66FF00',
strokeOpacity: 1.0,
strokeWeight: 2
});
flightPath.setMap(map);
我的问题是,沿途的某个地方,一些折线点搞砸了,生成的折线与原来的不一样。
我尝试在 mySQL 中使用blob类型。结果相同。
我尝试通过使用编码字符串在第二个地图上声明一个字符串变量来绕过数据库。结果相同。