Marker.remove()无法在Google地图中使用?

时间:2015-10-09 11:14:04

标签: javascript android google-maps google-maps-markers

在我的应用程序中,当我单击一个标记时,我有两组标记应该删除另一个标记。但是marker.remove()不起作用,检查了标记是否!= null然后删除标记但是标记是没有删除请帮助我。

     public class MapFragment extends Fragment implements LocationListener
        { 
private static final String LOG_TAG = "ExampleApp"; 

private MapView mMapView; 
private GoogleMap mMap; 
private Bundle mBundle; 
private static final String SERVICE_URL = "http://203.187.247.199/primevts/vtsservice.svc/data"; 
JSONObject json = null; 
JSONObject jsonobject = null; 
JSONObject jsonobject1 =null;
JSONObject jsonobject2 =null;
JSONObject ja = null; 
JSONArray jsonarray = null; 
JSONArray jsonarray1 = null;
JSONArray jsonarray2 = null;
ProgressDialog mProgressDialog; 
ArrayList<HashMap<String, String>> arraylist1; 
ArrayList<HashMap<String, String>> arraylist11; 
ArrayList<HashMap<String, String>> arraylist12; 
ArrayList<HashMap<String, String>> arraylist; 
List<Marker> markerList = new ArrayList<Marker>();

private Timer timer;
static String LONG = "Long"; 
static String LAT = "Lat"; 
ArrayList<String> ct; 
public double latt = 0; 
public double lng = 0; 
public ArrayList<Integer> dLat; 
private AlarmManager alarmMgr;
private PendingIntent alarmIntent;
private Handler handler;
public Marker marker;
Marker stop;
String RegistrationNo="";
LatLng destination,source,destination2,center;
Polyline polylin;
String ime1,destname,routeid;
GMapV2GetRouteDirection md;
private HashMap<String, Marker> mMarkers = new HashMap<>();
int value=1;
// LatLngBounds values ; 
double latitude, longitude,destlat,destlong,sourcelat,sourcelong,destlat2,destlong2; 
String ime,reg,regi; 
Geocoder geocoder;
List<Address> addresses;
CircleOptions circleOptions;
Circle circle;
// LatLng val; 
float[] distance = new float[2];
static HashMap<String, String> datas; 

static HashMap<String, String> map; 
String[] latlngvalues;
//  LocationManager locman;
Context context;
View rootView;
ImageView imageView1;
TextView Address;
public MapFragment() { 
} 

@Override 
public View onCreateView(final LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) { 
    rootView = inflater.inflate(R.layout.fragment_layout_one, container, false); 


    MapsInitializer.initialize(getActivity()); 

    mMapView = (MapView)rootView.findViewById(R.id.mapView); 
    Address=(TextView)rootView.findViewById(R.id.adressText);
    //imageView1=(ImageView) rootView.findViewById(R.id.imageView1);

    mMapView.onCreate(mBundle); 


    MapsInitializer.initialize(getActivity()); 

    if (android.os.Build.VERSION.SDK_INT > 9) { 
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
        .permitAll().build(); 
        StrictMode.setThreadPolicy(policy); 
    } 
    new DownloadJSON().execute(); 
    setUpMapIfNeeded(rootView);
    new DestinationJSON().execute();
    mMap.setInfoWindowAdapter(new InfoWindowAdapter() {

        @Override
        public View getInfoContents(Marker marker) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public View getInfoWindow(Marker marker) {
            // TODO Auto-generated method stub
            View v  = getActivity().getLayoutInflater().inflate(R.layout.info_window_layout, null);



            TextView markerLabel = (TextView)v.findViewById(R.id.ime);
            TextView destiname=(TextView)v.findViewById(R.id.destname);
            TextView route=(TextView)v.findViewById(R.id.routeid);


            markerLabel.setText(regi);
            destiname.setText(destname);
            route.setText(routeid);
            Log.e("imeid", ""+ime1);
            return v;
        }

    });

    /* handler = new Handler();
    handler.postDelayed(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
             new DownloadJSON().execute(); 
                setUpMapIfNeeded(rootView); 

             Toast.makeText(getActivity(), "Data Updated!!!! ", Toast.LENGTH_SHORT).show();
             Log.e("Data in Log", "");
        }
    }, 1000);
     */
    final Handler handler = new Handler();
    timer = new Timer();
    TimerTask doAsynchronousTask = new TimerTask() {
        @Override
        public void run() {
            handler.post(new Runnable() {
                public void run() {
                    //mMap.clear();
                    //Toast.makeText(getActivity(), "Data Updated!!!! ", Toast.LENGTH_SHORT).show();
                    new DownloadJSON().execute(); 
                    setUpMapIfNeeded(rootView); 
                }
            });
        }
    };
    timer.schedule(doAsynchronousTask, 20000, 20000);




    /*LocationManager locman = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
    //locman.requestLocationUpdates(minTime, minDistance, criteria, intent);
    locman.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10, this);*/
    return rootView; 
} 

private void setUpMapIfNeeded(View inflatedView) { 

    if (mMap == null) { 
        mMap = ((MapView) inflatedView.findViewById(R.id.mapView)).getMap(); 
        mMap.setMyLocationEnabled(true); 

        Location myLocation = mMap.getMyLocation(); 
        if (mMap != null) {  
            //mMap.clear();

            mMap.setOnCameraChangeListener(new OnCameraChangeListener() {

                @Override
                public void onCameraChange(final CameraPosition arg0) {
                    mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
                        @Override
                        public void onMapLoaded() {
                            LatLng latLng= mMap.getCameraPosition().target;
                            double lat = latLng.latitude;
                            double lng = latLng.longitude;
                            Log.e("lati",""+lat);
                            Log.e("longi",""+lng);
                            Log.d("TAG", latLng.toString());
                            //mMap.clear();
                            if(circle!=null){
                                circle.remove();
                                //mMap.clear();
                            }



                            circleOptions = new CircleOptions();
                            circleOptions.center(latLng);
                            //circleOptions.fillColor(Color.TRANSPARENT);
                            circleOptions.radius(10000);
                            circleOptions.strokeColor(Color.TRANSPARENT);
                            circle = mMap.addCircle(circleOptions);
                            Log.e("",""+circle);
                            center = mMap.getCameraPosition().target;

                            new GetLocationAsync(center.latitude, center.longitude).execute();

                            /* geocoder = new Geocoder(getActivity(), Locale.getDefault());

                            try {
                                addresses = geocoder.getFromLocation(lat, lng, 1);
                                 String address = addresses.get(0).getAddressLine(0); // If any additional address line present than only, check with max available address lines by getMaxAddressLineIndex()
                                  Log.e("address",""+address);
                                    String city = addresses.get(0).getLocality();
                                    Log.e("city",""+city);
                                    String state = addresses.get(0).getAdminArea();
                                    Log.e("state",""+state);
                                    String country = addresses.get(0).getCountryName();
                                    Log.e("contry",""+country);
                                    String postalCode = addresses.get(0).getPostalCode();
                                    Log.e("postalcode",""+postalCode);
                                    String knownName = addresses.get(0).getFeatureName();
                                    Log.e("knownName",""+knownName);
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            } // Here 1 represent max location result to returned, by documents it recommended 1 to 5


                            //Toast.makeText(this, latLng.toString(), Toast.LENGTH_LONG).show();
                        }*/



                        }
                    });
                }
            });


mMap.setOnMarkerClickListener(new OnMarkerClickListener() {

                @Override
                public boolean onMarkerClick(Marker arg0) {
                    // TODO Auto-generated method stub

                    if(stop!=null){
                    stop.remove();
                  }


                    arg0.showInfoWindow();

                    regi=arg0.getTitle().toString();
                    Log.e("aaa", ""+regi);
                    JSONPost jsonpost= new JSONPost();

                    ja=jsonpost.datewise(regi);
                    Log.e("Home_details..", "" + ja);
                    //  new DownloadJSON2().execute();



                    try
                    {

                        arraylist11 = new ArrayList<HashMap<String, String>>();
                        arraylist12 = new ArrayList<HashMap<String, String>>();

                        jsonarray = ja.getJSONArray("Routeinbus");

                        for (int i = 0; i <jsonarray.length(); i++) {

                            HashMap<String, String> map = new HashMap<String, String>();
                            json = jsonarray.getJSONObject(i);
                            Log.e("G>>>>>>>>>>>", "" + json);
                            // Retrive JSON Objects
                            // map.put("flatID", jsonobject.getString("flatID"));
                            map.put("FromLat", json.getString("FromLat"));

                            map.put("FromLong", json.getString("FromLong"));
                            sourcelat = json.getDouble("FromLat"); 
                            sourcelong=json.getDouble("FromLong");
                            source=new LatLng(sourcelat, sourcelong);
                            map.put("Fromaddress", json.getString("Fromaddress"));
                            map.put("ToLat", json.getString("ToLat"));
                            map.put("ToLong", json.getString("ToLong"));
                            routeid=json.getString("RouteID");
                            destname=json.getString("Toaddress");
                            destlat2=json.getDouble("ToLat");
                            destlong2=json.getDouble("ToLong");
                            destination2=new LatLng(destlat2, destlong2);
                            jsonarray1 = json.getJSONArray("Routes");
                            Log.d("Hbbbbbbbbbbbbbbb", "" + jsonarray1);

                            for (int j = 0; j <jsonarray1.length(); j++) {


                                jsonobject1 = jsonarray1.getJSONObject(j);
                                jsonarray2=jsonobject1.getJSONArray("stages");
                                Log.d("jsonarray2", "" + jsonarray2);

                                for(int k=0;k<jsonarray2.length();k++)
                                {
                                    jsonobject2 =jsonarray2.getJSONObject(k);
                                    HashMap<String, String> map1 = new HashMap<String, String>();
                                    map1.put("Lat",jsonobject2.getString("Lat"));

                                    Log.d("Hbbbbbbbbbbbbbbb", "" + jsonobject2.getString("Lat"));
                                    map1.put("Long",jsonobject2.getString("Long"));
                                    map1.put("StopName", jsonobject2.getString("StopName"));
                                    Log.d("Hbbbbbbbbbbbbbbb", "" + jsonobject2.getString("Long"));
                                    //      map1.put("LiveLongitude",jsonobject1.getString("LiveLongitude"));

                                    //       Log.d("Hbbbbbbbbbbbbbbb", "" + jsonobject1.getString("LiveLongitude"));


                                    arraylist12.add(map1);

                                    Log.e("arraylist12", ""+arraylist12);


                                    //marker=mMap.addMarker(new MarkerOptions().position(destination2).icon(BitmapDescriptorFactory .fromResource(R.drawable.bustour)));


                                    for (int m = 0; m < arraylist12.size(); m++)
                                    { 

                                        final LatLng stopposition = new LatLng(Double .parseDouble(arraylist12.get(m).get("Lat")),Double.parseDouble(arraylist12.get(m).get("Long"))); 
                                        Log.e("position", ""+stopposition);                             
                                        String stopname = arraylist12.get(m).get("StopName");
                                        Log.e("markcheck",""+stopname);


                                             final MarkerOptions options = new MarkerOptions().position(stopposition); 
                                                //mMap.addMarker(options); 
                                             stop=mMap.addMarker(options.icon(BitmapDescriptorFactory .fromResource(R.drawable.bustour)).title(stopname));

                                    }



                                }
                            }
                            arraylist11.add(map);
                            Log.e("arraylist11",""+arraylist11);

                        } 

                    }catch (Exception e) {
                        String result = "Error";
                    }

                    return false;
                }
            });

0 个答案:

没有答案