如何使用该函数解码字符串?
我无法找到本机库的方式
var path = google.maps.geometry.encoding.decodePath(encodedStr);
-----解决方案----
String str = "ern[pd_cMiAa@\q@l@kAPY`Ad@hCnAr@^HOzAaClCgElBsCfBhA";
var decodedPath = encoding.decodePath(str);
var estimate_line = new Polyline(new PolylineOptions()
..path = decodedPath
..geodesic = true
..strokeColor = '#FF0000'
..strokeOpacity = 1.0
..strokeWeight = 2
..map = map
);
答案 0 :(得分:2)
使用google_maps
包,您可以导入package:google_maps/google_maps_encoding.dart
并使用encoding.decodePath(path)
。编码是一个可选的js库,您需要在http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=encoding
中使用<script>
进行操作。
答案 1 :(得分:2)
我在这里用原生飞镖实现了 供编码参考:https://developers.google.com/maps/documentation/utilities/polylinealgorithm这里说明了编码算法
import 'dart:io';
main()
{
var z="eo~fMzva{Fl|cuTgh~oU~bxjDhpptb@";
print(decode(z));
}
/** function to decode the string ****/
List decode(var a)
{
var list=a.codeUnits;
var lList=new List();
int index=0;
int len=a.length;
int c=0;
// repeating until all attributes are decoded
do
{
var shift=0;
int result=0;
// for decoding value of one attribute
do
{
c=list[index]-63;
result|=(c & 0x1F)<<(shift*5);
index++;
shift++;
}while(c>=32);
/* if value is negetive then bitwise not the value */
if(result & 1==1)
{
result=~result;
}
var result1 = (result >> 1) * 0.00001;
lList.add(result1);
}while(index<len);
/*adding to previous value as done in encoding */
for(var i=2;i<lList.length;i++)
lList[i]+=lList[i-2];
return lList;
}
答案 2 :(得分:0)
您可以使用geo package来编码/解码路径:
import 'package:geo/geo.dart';
void main() {
var decodedPath = const PolylineCodec().decode(str);
}