latLong15 = new LatLong(Latitude,Longitude);
Layers x = mapView.getLayerManager().getLayers();
int i = layerX.indexOf(this.polyline2);
((Polyline) mapView.getLayerManager().getLayers().get(i)).getLatLongs().add(latLong15);
として、位置情報が更新されるたびに軌跡を追記するようにしました。
ところが、最初はうまくいくのですが、一旦メニュー画面に戻るとエラーが発生してアプリが停止してしまう。デバッグで原因を探るとどういう訳かメニューに戻った直後にレイヤーの情報がクリアされている。
Layers x = mapView.getLayerManager().getLayers();
int i = layerX.indexOf(this.polyline2);
で取得した結果が-1になっている。-1ということは該当のレイヤが無いということを意味している。 デバッグモードでたどっていってもしっかりCreateLayersのところでレイヤーの追加をやっているにもかかわらずGPS がアップデートされたときの処理drawUserPositionMarkerにやって来るとレイヤー情報が消えてしまっている。まったく訳がわからないが、参考にしたサイトで
Layers layers = mapView.getLayerManager().getLayers();
if (startMarker != null) {
removeLayer(layers, startMarker);
}
としていたのを思い出して、レイヤー情報がない場合処理をスキップするようにして見たところ何故かうまくいった。どうもすっきりしないがとりあえず動いたのでよしとすることにする。
Layers x = mapView.getLayerManager().getLayers();
//int i = mapView.getLayerManager().getLayers().indexOf(this.polyline2);
int i = layerX.indexOf(this.polyline2);
if (i>=0) {
((Polyline) mapView.getLayerManager().getLayers().get(i)).getLatLongs().add(latLong15);
}