概述
https://www.ingress.com/r/getEntities
這個接口主要作用是獲取地圖上的po,link,field。
參數
post 參數:
{
"tileKeys": [
"13_13070_6970_2_8_100",
"13_13069_6970_2_8_100",
"13_13070_6969_2_8_100",
"13_13069_6969_2_8_100"
],
"v": "a9913f22cd769d29601185abbd32fd48cb42df08"
}
tileKeys
是地圖塊信息的一個數組。- 數組裏是形如
zoom_x_y_minlvl_maxlvl_maxhealth
格式的數據。zoom
是放大級別。x
,y
是該級別下的區域編號。後面的是關於po等級的篩選(未驗證)。最後一項含義不明。 v
依舊是鑑權之用。
關於放大級別和區域編號,參考 tilenames。
區域編號與經度緯度放大級別的換算代碼如下。
直接摘錄了iitc插件的js代碼,項目地址: iitc。
window.lngToTile = function(lng, params) {
return Math.floor((lng + 180) / 360 * params.tilesPerEdge);
}
window.latToTile = function(lat, params) {
return Math.floor((1 - Math.log(Math.tan(lat * Math.PI / 180) +
1 / Math.cos(lat * Math.PI / 180)) / Math.PI) / 2 * params.tilesPerEdge);
}
window.tileToLng = function(x, params) {
return x / params.tilesPerEdge * 360 - 180;
}
window.tileToLat = function(y, params) {
var n = Math.PI - 2 * Math.PI * y / params.tilesPerEdge;
return 180 / Math.PI * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));
}
其中titlesPerEdge
由下面的數據決定。
var DEFAULT_ZOOM_TO_TILES_PER_EDGE = [1,1,1,40,40,80,80,320,1000,2000,2000,4000,8000,16000,16000,32000];
tilesPerEdge = window.TILE_PARAMS.TILES_PER_EDGE[zoom]
返回結果
{
"result": {
"map": {
"15_26140_13939_1_8_100": {
"gameEntities": [
[
"6787b4be70534d2d86c8d607eedfd459.9",
1435233142525,
[
"e",
"R",
"e8ff994832ee4e39939352aa82b6c8c0.16",
22619694,
114055467,
"895b4d90d3044fef8d6afc803ecc341f.16",
22611713,
114055330
]
],
[
"3186e208ff4144408cf7586ce46e6279.b",
1435406658874,
[
"r",
"E",
[
[
"9e6810a83dcb402cacfb43b6d042211b.16",
22645538,
113916040
],
[
"d3764f1abbdb43d6b4cfd8976561b7b5.16",
22621752,
113814413
],
[
"fdcbde53b46648cc859991270a023a9e.16",
22643075,
113917466
]
]
]
],
[
"e361838fea5341b6b67c8e5b1b6399df.16",
1435006502060,
[
"p",
"N",
22572673,
114085747,
1,
0,
0,
"http://lh5.ggpht.com/QCxfmFYdqCqhtPbINRsrL-GhXf4Z3r6b1_CCWd3Te0NoHsh5jv3kwv42cDkMT4TRVR8qv4nEdUETxieiME7Y5w",
"龍川車田豆腐坊",
[],
false,
false,
null,
1435006502060
]
]
]
}
}
}
}
- 數據中只顯示了三種數據類型。
e
,r
,p
分別代表link,field,portal。 zoom_x_y_minlvl_maxlvl_maxhealth
格式對應上面的請求。(示例數據未與上面的請求數據對應)- 32+長的字符串可能起到的是uuid的作用,來標識link,portal,field。
E
和R
代表綠軍和藍軍。- link類型中帶有兩個portal點信息,經度,緯度,portal的uuid。
- field類型中帶有三個portal點信息,經度,緯度,portal的uuid。
- portal類型中除了經度,緯度,uuid,還有名稱,圖片位置,等級,能量,時間等信息。
想法
由於官方的intel的訪問速度有限,每次頁面都是全量的獲取數據,並沒有緩存。體驗上就是響應速度慢,點一個地圖要等很久。
因爲portal的變化是很少的,短期可以認爲不變。如果把這些portal的數據獲取下來之後緩存,可以改善體驗。
再結合log數據,進行增量的修改。
再則把這個數據獲取下來之後,可以進行二次加工,比如連多重,規劃大cf。
目前這個格式的數據轉化爲kml文件的代碼已經完成。