Flex google maps 编码折线
如何用FLEX3 对google 地图 折线进行编码,请赐教!
最好还有C#的写法
[解决办法]
你把折线的地方用点标示出来,然后在用线段把每个点链接起来就可以实现了。
[解决办法]
编码算法:
/*
取初始有符号值:
-179.9832104
将其取十进制值乘以 1e5,并取整:
-17998321
将十进制值转换为二进制值。请注意,必须通过对二进制值求反并在结果中添加 1 的方法,使用负值的二补码来计算负值:
00000001 00010010 10100001 11110001
11111110 11101101 01011110 00001110
11111110 11101101 01011110 00001111
将二进制值左移 1 位:
11111101 11011010 10111100 00011110
如果原来的十进制值是负值,则对以下编码求反:
00000010 00100101 01000011 11100001
将该二进制值分为 5 位一组的块(从右侧开始):
00001 00010 01010 10000 11111 00001
将这些 5 位一组的块倒序放置:
00001 11111 10000 01010 00010 00001
如果后面还有一个位块,则将每个值与 0x20 进行“或”(OR) 操作:
100001 111111 110000 101010 100010 000001
将每个值转换为十进制值:
33 63 48 42 34 1
将每个值加上 63:
96 126 111 105 97 64
*/
自己参考实现:
var p:int = int(point*1E5);
p = p << 1;
if(p < 0 )
p = ~p;
var rs:String = "";
while((p >>> 5) > 0)
{
var block:int = p & 0x1F;
block = (block
[解决办法]
0x20) + 63;
rs += String.fromCharCode(block);
p = p >>> 5;
}
rs += String.fromCharCode(p+63);
return rs;