google map 折線編碼c 實現

2021-08-23 14:48:58 字數 1908 閱讀 8482

查了些資料,找到一種方法,可以解決座標點很多的問題。google maps的gpolygon類提供一種工廠方法fromencoded(),這種方法可以載入由大量座標點變換成的折線編碼。google給出了編碼折線的演算法格式,如下:

編碼折線儲存任意給定的一組點的兩種型別的編碼資訊:這些點的經緯度,以及用於顯示這些點的最大縮放級別。級別使用無符號值編碼,而點座標需要使用有符號的值,所以這兩種情況的編碼過程稍有不同。下面說明了此過程。如果僅有幾個靜態的點,您還可以使用互動的折線編碼工具。

編碼經緯度

編碼過程將二進位制值轉換為一系列使用常見的 base64 編碼的 ascii 字元**:為了確保正確顯示這些字元,將編碼值轉換為 ascii 之前編碼值會加上 63(ascii 字元「?」)。這種演算法還通過檢查每個位元組組中的最低有效位,來確定給定點中是否還有額外的字元**;如果該位設定為 1,則該點未完全角成,可能後面有其他資料。

此外,為了節省空間,點僅包含與上個點的偏移值(除了第乙個點外)。所有點都使用 base64 編碼為有符號整數,因為經度和緯度是有符號值。折線中的編碼格式需要表示兩個座標,分別以合理精度表示經度和緯度。如果最大經度是 +/- 180 度,精度為 5 個小數字(180.00000 到 -180.00000),則可能會需要 32 位有符號二進位制整數值。

請注意在字元字面值 (string literal) 中,反斜槓被解釋為轉義符。 此工具的任何輸出都會將反斜槓字元轉換為字串字面值中的雙反斜槓。

下面說明了編碼此類有符號值的步驟。

取初始有符號值:

-179.9832104

將其取十進位制值乘以 1e5,並取整:

-17998321

將十進位制值轉換為二進位制值。請注意負值必須求反,並以值填充位元組邊界:

00000001 00010010 10100001 11110001

11111110 11101101 10100001 00001110

11111110 11101101 01011110 00001111

變換二進位制值:

11111110 11101101 01011110 00001111 0

如果原來的十進位制值是負數,則對以下編碼求反:

00000001 00010010 10100001 11110000 1

將該二進位制值分為 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

將每個值轉換為其 ascii 對應值:

`~oia@

演算法裡的有些步驟呢不是很明白,不過根據演算法寫出了c++**。

#include "stdafx.h"

#include "math.h"

#include "string"

#include "iostream"

//四捨五入取整函式

int interger(double x)

int _tmain(int argc, _tchar* argv)

string result="";

//將該二進位制值分為5位一組的塊

while(sgn_num>=0x20)

//0x20是ascii碼中可見字元的開始

result+=char(sgn_num+63);//最後一組值

cout《輸出值為:·~oia@

google map 地理編碼API的兩種方式

google 地圖在 2018 年7月16之後,開始收費,所以當你需要用到google地圖的服務的時候需要開通結算服務,獲取到key,具體資費和服務內容 請參考google map官網google map使用者指南 當我們有了地圖的key之後,其實,獲取響應的地圖google提供了兩種方法,一種是j...

A率13折線PCM編碼的C語言實現

pcm的a律13折線編碼的碼組一般由8位碼組成,其碼組中的碼位安排如表3所示。其碼位安排的規律,由高位到低位依次是極性碼 1位 段落碼 3位 段內碼 4位 段內碼又稱為電平碼。1 極性碼。1位極性碼有 1 0 兩種狀態,正好分別代表訊號的正負兩種極性。2 段落碼。在13折線編碼中,壓擴特性一共分為1...

13折線a律編碼解碼輸出 模擬量編碼器

模擬量編碼器又叫電流編碼器和電壓編碼器,分為單圈和多圈。編碼器模擬量編碼器可以通過外部設定,多用途 多功能,直接對應單圈多圈角度 多圈長度 轉動平移速度測量。4ma 對應值 20ma 對應值任意設定及微調 方向設定 外部置位線設定預設位置,安裝方便,無需找零。內部絕對值光電碼盤,全數位化計值,1 4...