サーバからフェッチされた複数のマーカーをプロットしようとしていますが、いくつかのイベントでそれらを削除し、キャンセルボタンを押すと再びプロットします。毎回私は私がどのようにこのmap.clear()で未知のimageData参照が公開されました
try {
for (int i = 0; i < Constant.spot_details.size(); i++) {
LatLng latlng = new LatLng(Double.parseDouble(Constant.spot_details.get(i).geo_x),
Double.parseDouble(Constant.spot_details.get(i).geo_y));
final MarkerOptions marker = new MarkerOptions().position(latlng);
if (Constant.spot_details.get(i).type.equals("a")) {
marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.a_marker));
} else if (Constant.spot_details.get(i).type.equals("b")) {
marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.b_marker_grey));
} else
marker.icon(BitmapDescriptorFactory.fromBitmap(Utils.string_to_bitmap(Constant.spot_details.get(i).logo, activity)));
marker.title(Constant.spot_details.get(i).name);
final Marker m=mMap.addMarker(marker);
all_markers.add(m);
animate_marker_fade_in(m);
plotted_spot_array.add(Constant.spot_details.get(i));
marker_map.put(marker.getPosition().latitude + marker.getPosition().longitude, i);
}
} catch (Exception e) {
e.printStackTrace();
}
サーバから詳細を取得した後これは私が(plot_all_markersメソッドを呼び出すことによって)マーカーを追加してい方法です
java.lang.IllegalArgumentException: Released unknown imageData reference`
私は
このエラーが出るmap.clear()
を呼び出しますマップからマーカーを削除し、必要なマーカーのみをプロットする
mMap.clear();
PolylineOptions lineOptions = new PolylineOptions();
String s = "";
latLngs = new ArrayList<LatLng>();
try {
// s = result.getString("points");
s = Constant.request_spot.directions[0].overview_polyline.points;
latLngs = decodePoly(s);
s = "";
LatLng latLong = new LatLng(0, 0);
for (LatLng l : latLngs) {
lineOptions.add(l);
s = l.latitude + ", " + s;
latLong = l;
}
lineOptions.width(5);
lineOptions.color(R.color.theme_color);
_m = Demand.mMap.addMarker(new MarkerOptions().position(latLong)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.a_marker_yellow)));
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(new LatLng(Constant.request_spot.directions[0].legs[0].start_location.lat,
Constant.request_spot.directions[0].legs[0].start_location.lng));
builder.include(new LatLng(Constant.request_spot.directions[0].legs[0].end_location.lat,
Constant.request_spot.directions[0].legs[0].end_location.lng));
LatLngBounds bounds = builder.build();
int padding = 300; // offset from edges of the map in pixels
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
Demand.mMap.animateCamera(cu);
Demand.mMap.addPolyline(lineOptions);
cross_item.setVisible(true);
最後cross_itemを押すことに私は再び)(mMap.clearを呼び出していますが、そのこれはどのように私はこのエラーを回避することができ、私のLogcat出力
java.lang.IllegalArgumentException: Released unknown imageData reference
at maps.ce.i.a(Unknown Source)
at maps.ei.bh.c(Unknown Source)
at maps.ei.s.o(Unknown Source)
at maps.ei.bu.e(Unknown Source)
at com.google.android.gms.maps.internal.e$a.onTransact(:com.google.android.gms.alldynamite:205)
at android.os.Binder.transact(Binder.java:387)
at com.google.android.gms.maps.internal.IGoogleMapDelegate$zza$zza.clear(Unknown Source)
at com.google.android.gms.maps.GoogleMap.clear(Unknown Source)
at com.drishtigroup.needtopark.fragments.Demand.onOptionsItemSelected(Demand.java:499)
at android.support.v4.app.Fragment.performOptionsItemSelected(Fragment.java:2085)
at android.support.v4.app.FragmentManagerImpl.dispatchOptionsItemSelected(FragmentManager.java:2163)
at android.support.v4.app.FragmentController.dispatchOptionsItemSelected(FragmentController.java:304)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:410)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:167)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100)
at android.support.v7.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:69)
at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:169)
at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:760)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:811)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:958)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:948)
at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:618)
at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:139)
at android.view.View.performClick(View.java:5201)
at android.view.View$PerformClick.run(View.java:21163)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
ある
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_filter) {
mMap.clear();
cross_item.setVisible(false);
plot_all_markers();
requestServer(mMap.getCameraPosition().target);
}
return super.onOptionsItemSelected(item);
}
そのライン上でクラッシュ?
どのような種類のオブジェクトが 'cross_item'ですか?マップ関連ですか? – antonio
@ antonio-そのシンプルなメニューです。そのmenuitemをタップするとmap.clear()が呼び出されます – Victor