使用Google Maps API encodePoly编码折线后显示异常的解决方法
Fix for Google Maps Encoded Polyline Display Issue After Database Storage
我之前也踩过一模一样的坑!用Google Maps API的encodePoly方法编码折线后存入数据库,再下载解码时折线显示完全异常。折腾了好一阵才摸清楚问题根源,分享下解决办法:
核心问题&正确处理时机
数据库存储时会自动转义单个反斜杠\,导致取出后的编码字符串丢失了关键的转义信息,解码自然出错。这里的关键是转义操作必须在POST提交到数据库之前做,等下载解码后再处理完全没用。
解决步骤
在encodePoly编码完成后、发起POST请求前,把编码字符串中的单个反斜杠\全局替换为两个反斜杠\\:
调整后的代码片段
function transferRteData(runPath, map) { // 用Google Maps API编码折线 var encodedPath = google.maps.geometry.encoding.encodePath(runPath); // 关键操作:POST到数据库前转义反斜杠 encodedPath = encodedPath.replace(/\\/g, '\\\\'); // 后续执行POST请求,将处理后的encodedPath存入数据库 // ...(你的POST请求逻辑) }
这样处理后,从数据库取出编码字符串直接解码,折线就能正常显示了!
内容的提问来源于stack exchange,提问作者personnameds
相关产品推荐
相关产品推荐

