1
我正在使用for循環來解析android中的GPX文件,並將得到的lat和long放入適合google靜態映射的字符串中。靜態地圖api允許URL最多約2000個字符。限制for循環結果的大小
我想要做的就是遍歷gpx文件中的條目,以便獲得最大數量的細節而不會產生太多字符。例如,如果lat和long是10個字符,那麼我總是希望生成儘可能接近200個標記。
我開始這個工作代碼
List<Location> gpxList = decodeGPX(gpxFile);
for(int i = 0; i < gpxList.size(); i++){
info += ((Location)gpxList.get(i)).getLatitude()
+ ","
+ ((Location)gpxList.get(i)).getLongitude() + "|";
}
最明顯的方式做到這一點是採取列表,併除以允許的(200在這個例子中)標記的最大數量的長度,確保這是一個整數,然後在循環迭代時增加這些項目。但是,我如何確保在列表末尾沒有出現界限錯誤?
編輯
要清楚,我想,以減少數據點的頻率,而不是減少點的數量如果是有道理的。想象一下,我有一個帶有2000個標記的gpx文件,可以進行往返。我想生成一個200點的列表,它仍然給出了完整的行程(精確度損失),而不是僅列出僅僅給出行程開始的前200個點
考慮使用一個StringBuilder(在循環之前創建),而不是在循環內創建String並執行String contatenation。使用Strings的解決方案創建了很多對象 - 這對垃圾收集器來說是很多工作。 – 2014-10-19 19:33:18
@BartoszBilicki我完全同意。我只是根據OP的代碼來回答我的答案。我通常用字符串上的'+'運算符來改變代碼來代替使用StringBuilder。 – Eran 2014-10-19 19:39:38
謝謝,但不是我在找什麼。我的錯,我會添加一個編輯,試圖清除這個問題 – EnduroDave 2014-10-19 19:44:23