Google Maps Android で どれくらいPolylineオブジェクトを貼り付けられるかの実験
Polylineで線が描けるのはわかりましたが、じゃあ具体的にどれ位貼り付けても大丈夫なのか試してみました。
で、結論から書いちゃうと、オブジェクト数をできるだけ押さえて、頂点数を増やせってことみたいです。
目的
トラッキングデータを少なくとも3万点はプロットしたい。
案1
v1の時に実装してたみたいに、MapViewを継承してonDrawで自分で描く方法はどう?
内部はGLSurfaceViewらしいし、あんまりそーゆーのはよくなさげ。どうやったらできるのか調べるのも嫌なのでボツ
案2
素直にPolylineを使う
それが楽でいいです
実験開始
ということで、GalaxyNexus 海外版の4.2.2なドノーマル機で調査してみました
頂点数固定
まずは100頂点のpolylineを、10, 100,300,500,1000個プロットしてみました。
10 | 100 | 300 | 500 | 1000 | |
---|---|---|---|---|---|
スクロール | 楽勝 | 楽勝 | いける | いける | 少しひっかかるがいける |
ズーム | いける | 許容範囲 | ちょっと厳しい | うーん厳しい | かなり厳しい |
スクロールはいいけどズームが厳しい感じ。
オブジェクト数固定
こんどは100個のpolylineオブジェクトを、頂点数を 10,100,300,500,1000と変えてプロットしてみました。
10 | 100 | 300 | 500 | 1000 | |
---|---|---|---|---|---|
スクロール | 楽勝 | 楽勝 | 楽勝 | いける | 少しひっかかるがいける |
ズーム | いける | いいんじゃない | 許容範囲 | 許容範囲 | 許容範囲 |
こっちはまぁまぁいいんじゃない?
結論
オブジェクトが増えるとそれだけ管理の手間が増えるから遅くなるのはなんとなく納得です。
あと、オブジェクトの頂点再設定も500点くらい一瞬で済みますし、100個x500頂点あたりを 参考値として、後は実機の描画性能計測して増減させるように実装することにします。
試してはいませんが、iOS版も似たような結果になるんでしょう。