设为首页 加入收藏

TOP

GoogleMap编码折线算法
2014-11-17 15:52:11 】 浏览:380
Tags:GoogleMap 编码 算法

  //---------------------------------------------------------------------------


  #include


  #pragma hdrstop


  #include "math.h"


  #include "GooglePolyline.h"


  #include "Minux\MMath.h" //这个可以.去掉.是为了.调用下面.Round函数用的.


  //---------------------------------------------------------------------------


  /*二进制转换为十进制(8位)*/


  int __fastcall BintoDec(char* b)


  {


  int j = 0,v = 0;


  int Len = strlen(b);


  if (Len < 1) return Len;


  for(int i=Len-1; i>=0; i--)


  {


  if (b[i]=='1')


  v += (int)pow(2,j);


  j++;


  }


  return v;


  }


  //---------------------------------------------------------------------------


  String __fastcall Rights(String Value, int iLen)


  {


  int i;


  i = Value.Length() - iLen + 1;


  if (i<=0) i = 1;


  String ret = Value.SubString(i,iLen);


  return ret;


  }


  //---------------------------------------------------------------------------


  String __fastcall EncodePolyline(double* LngBuf, double* LatBuf, unsigned int BufLen)


  {


  double TmpLng, TmpLat;


  String ret;


  for (int i=0, iLoop=BufLen; i


  {


  TmpLng = LngBuf[i];


  TmpLat = LatBuf[i];


  if (i != 0)


  {


  TmpLng = LngBuf[i] - LngBuf[i-1];


  TmpLat = LatBuf[i] - LatBuf[i-1];


  }


  ret += EncodePoint(TmpLng);


  ret += EncodePoint(TmpLat);


  }


  return ret;


  }


  //---------------------------------------------------------------------------


  String __fastcall EncodePoint(double col)


  {


  /*1.取初始有符号值 col */


  /*2.将其取十进制值乘以 1e5,并取整:*/


  // Round是自定义函数.此处如果用Int取整的.话.三位小数时就会出.问题.用的到的朋友自己.Google下看把.


  int num = (Round)(col * 100000);


  /*3.将十进制值转换为二进制值*/


  char buf[128]; itoa(num,buf,2);


  /*4.末位+0*/


  strcat(buf,"0");


  /*5.如果原来的十进制值是负数,则对以下编码求反.并去除前面的0*/


  if (num<0)


  {


  for(int i=0,iLoop=strlen(buf);i


  {


  if (buf[i]=='0')


  buf[i] = '1';


  else


  buf[i] = '0';


  }


  }


  编辑特别推荐:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++中内存泄漏的检测 下一篇MFC问题集之注意变量的作用域

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目