gpt4 book ai didi

android - 在一个应用程序中使用 2 个 map fragment 时出现问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:51 28 4
gpt4 key购买 nike

我正在尝试在两个不同的 fragment Activity 中使用两个不同的 map fragment 。根据 SupportMapFragment 设计,我将映射键保存在 list 文件中应用程序属性的元标记中。 但是我的 map View 没有清除,它在第二个 fragment 中显示了带有旧点的同一张 map ,尽管我正在调用“getMap().clear()”。请建议

除非我不在单独的 Activity 中使用新的 MapFragment,否则它工作正常,如果我使用新的 MapFragment,它会采用相同的 map View ,因此不会清除 map View 。

代码:

map fragment

公共(public)类 DisplayMapFragment 扩展了 SupportMapFragment 实现 OnMarkerClickListener,OnInfoWindowClickListener {

View mMapViewContainer;
MapView mMapView;

private Utill utilClass = Utill.getInstance(false);
private View v;
private MapView mapView;
private GeoPoint p;
private MapController mc;
private String latstr = "";
private String lonstr = "";
private String name, address;
private double lat;
private double lng;

ArrayList<NearByItem> NearByList=new ArrayList<NearByItem>();
private LatLng mPosFija;
private ArrayList<Double> mlat, mlong;
private ViewGroup parent;
Utill utilclass=Utill.getInstance(false);
Bitmap bmp;
ImageView ivIcon;
StringBuilder sbc=new StringBuilder();

ProgressBar progressbar;
public ImageLoader imageLoader;
public DisplayMapFragment() {
super();

}

public static DisplayMapFragment newInstance(LatLng posicion) {
DisplayMapFragment frag = new DisplayMapFragment();
frag.mPosFija = posicion;
return frag;

}

@Override
public void onCreate(Bundle arg0) {
// TODO Auto-generated method stub
super.onCreate(arg0);
NearByList=NearByMapActivity.fltrdNearByLists;
imageLoader=new ImageLoader(this.getActivity().getApplicationContext());

}

@Override
public View onCreateView(LayoutInflater arg0, ViewGroup arg1, Bundle arg2) {
View v = super.onCreateView(arg0, arg1, arg2);
mlat = new ArrayList<Double>();
mlong = new ArrayList<Double>();
parent=arg1;
if(NearByMapActivity.fltrdNearByLists!=null && !NearByMapActivity.fltrdNearByLists.isEmpty())
NearByList.addAll(NearByMapActivity.fltrdNearByLists);
else
NearByList.addAll(Utill.NearbyList);


NearByMapActivity parentActivity = (NearByMapActivity) getActivity();

return v;
}

public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private List<OverlayItem> items;
private Drawable marker;

public MyItemizedOverlay(Drawable defaultMarker) {
super(defaultMarker);
items = new ArrayList<OverlayItem>();
marker = defaultMarker;
}

@Override
protected OverlayItem createItem(int index) {
return items.get(index);
}

@Override
public int size() {
return items.size();
}

@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
boundCenterBottom(marker);
}

public void addItem(OverlayItem item) {
items.add(item);
}

public void populateNow() {
populate();
}

@Override
protected boolean onTap(int index) {

return true;
}

}

private void initMap() {

UiSettings settings = getMap().getUiSettings();
settings.setAllGesturesEnabled(true);
// settings.setMyLocationButtonEnabled(true);
settings.isZoomControlsEnabled();
getMap().setTrafficEnabled(true);
getMap().getMaxZoomLevel();
// getMap().setMyLocationEnabled(true);

if(NearByMapActivity.fltrdNearByLists!=null && !NearByMapActivity.fltrdNearByLists.isEmpty())
getMap().moveCamera(
CameraUpdateFactory.newLatLngZoom(
new LatLng(Double.parseDouble(NearByMapActivity.fltrdNearByLists.get(0).getLocationLat()),
Double.parseDouble(NearByMapActivity.fltrdNearByLists.get(0).getLocationLong())), 14));
getMap().isTrafficEnabled();
// getMap().addGroundOverlay(new GroundOverlayOptions().)

getMap().setOnMarkerClickListener(this);
getMap().setOnInfoWindowClickListener(this);

marker=new MarkerOptions()
.position(
new LatLng(
Double.parseDouble(item.getLocationLat()),
Double.parseDouble(item.getLocationLong())))
.title(""+item.getStoreTitle())
.icon(bitmapLoyalty
).snippet(sbc.toString());
else
marker=new MarkerOptions()
.position(
new LatLng(
Double.parseDouble(item.getLocationLat()),
Double.parseDouble(item.getLocationLong())))
.title(""+item.getStoreTitle())
.icon(bitmapIconNearBy
).snippet(sbc.toString());



Marker marker1=getMap().addMarker(marker);

PopupWindowAdapter view1=new PopupWindowAdapter();

this.getMap().setInfoWindowAdapter(view1);


// .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));

bmp=BitmapFactory.decodeResource(getResources(),R.drawable.orgr_icon);
}
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
initMap();
getMap().addMarker(new MarkerOptions().position(new
LatLng(36.865814,-119.758399)).icon(BitmapDescriptorFactory.fromResource(R.drawable.red_pin)));
//getMap().addGroundOverlay(new GroundOverlay(null));

/* getMap().addGroundOverlay(new GroundOverlayOptions() .image(图像) .positionFromBounds(界限) .透明度(0.5));*/

@Override
public void onPause() {
super.onPause();

//getMap().clear();
}
public void onResume(){
super.onResume();
if(NearByMapActivity.mainMapView!=null)
//if(NearByMapActivity.mainMapView.getVisibility()==View.GONE)
NearByMapActivity.mainMapView.setVisibility(View.VISIBLE);
}

@Override
public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub
Log.e("cleared", "");
return false;
}

}

public void onStop(){
super.onStop();
//getMap().clear();
}

MAP ACTIVITY:启动 Fragment 的 Activity 类。

public class NearByMapActivity extends FragmentActivity{

onCreate(){
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
Fragment frag=new DisplayMapFragment();
transaction.add(R.id.middle_view, frag);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
transaction.addToBackStack(null);
transaction.commit();
}
}

最佳答案

关于android - 在一个应用程序中使用 2 个 map fragment 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15383641/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com