如何刷新谷歌地图apiv2

时间:2014-06-02 12:05:32

标签: android android-maps-v2

我有一个timer.it每5分钟运行一次。我在计时器运行方法中写了一个名为konumlarıAl的方法。这个方法从数据库获取位置数据。当konumlarıAl运行时,HaritaKonumGoster是方法调用。我想删除所有标记并在地图上显示新的位置数据标记而不刷新页面。

我的代码

private void HaritaKonumGoster() {
        // TODO Auto-generated method stub
        if (googleHarita == null) {
            googleHarita = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.haritafragment))
                    .getMap();
            if (googleHarita != null) {
                googleHarita.clear();
                if(mrks.size()!=0)
                {
                     for (Marker marker: mrks) {
                            marker.remove();
                        }
                        mrks.clear();
                }
                googleHarita.setMyLocationEnabled(true);

                LocationManager locationManager=(LocationManager)getSystemService(LOCATION_SERVICE);

                Criteria criteria=new Criteria();

                String provider =locationManager.getBestProvider(criteria, true);

                Location mylocation=locationManager.getLastKnownLocation(provider);
                 double latitude=0;
                double longitude=0;
                double mylatitude=0;
                double myLongtitude=0;
                 //double latitude=enlem;
                    //double longitude=boylam;
                if (mylocation != null){
                    mylatitude=mylocation.getLatitude();
                    myLongtitude=mylocation.getLongitude();
                }
                BitmapDescriptor bitmapDescriptor 
                   = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN);

                try{  
              for (int i = 0; i < degiskenler.taksici.size(); i++) {

                   latitude=Double.parseDouble(degiskenler.taksici.get(i).enlem.trim());
                   longitude=Double.parseDouble(degiskenler.taksici.get(i).boylam.trim());
                   LatLng istanbulKoordinat = new LatLng(latitude,longitude);
                   Marker m= googleHarita.addMarker(new MarkerOptions().position(istanbulKoordinat).title("Kız Kulesi").icon(bitmapDescriptor));
                   googleHarita.moveCamera(CameraUpdateFactory.newLatLngZoom(istanbulKoordinat, 7)); 
                   mrks.add(m);
               //   Toast.makeText(getBaseContext(),"harita :)",Toast.LENGTH_LONG).show();

               }
                }
                catch(Exception exception)  {

                    Toast.makeText(getBaseContext(),"harita olmadı",Toast.LENGTH_LONG).show();
                }

                googleHarita.addMarker(new MarkerOptions().position(new LatLng(mylatitude, myLongtitude)).title("you hereeee"));
            }
        }
    }
每隔5分钟

位置更新

  private void LocationUpdateEvery5minute() {
        // TODO Auto-generated method stub

               zamanlayici = new Timer();
               yardimci = new Handler(Looper.getMainLooper());
               zamanlayici.scheduleAtFixedRate(new TimerTask()
               {
           @Override
           public void run(){ 
                yardimci.post(new Runnable()
               {
                 public void run()
                 {  Toast.makeText(getBaseContext(), "timera girdi",Toast.LENGTH_SHORT).show();
                     konumlarıAl();

         }
        });    

       }

      }, 0, ZAMAN);


            }

2 个答案:

答案 0 :(得分:0)

使用

删除标记
 googleHarita.clear()

https://developer.android.com/reference/com/google/android/gms/maps/GoogleMap.html#clear()

只需拨打一次此方法即可删除地图上的所有标记。

然后,使用

添加标记
googleHarita.addMarker()

http://developer.android.com/reference/com/google/android/gms/maps/model/Marker.html

example here

我认为你不需要刷新任何页面。

答案 1 :(得分:0)

您必须使用 map.clear(); ,它可以帮助您从地图中删除所有标记,折线,多边形,叠加层等。