2016-09-21 42 views
1

我做了一個代碼。 在此代碼中,當我點擊地圖時,點擊點上會有一個標記。如何在點擊按鈕setMyLocationEnabled後直接在GoogleMap上添加Marker?

這是我的代碼

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 
    } 

    @Override 
    public void onMapReady(final GoogleMap googleMap) { 
     mMap = googleMap; 
     if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) 
       == PackageManager.PERMISSION_GRANTED) { 
      mMap.setMyLocationEnabled(true); 
     } else { 
      Toast.makeText(getApplicationContext(), "oh, no", Toast.LENGTH_LONG).show(); 
     } 
     googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
      @Override 
      public void onMapClick(LatLng point) { 
       String lat = String.valueOf(point.latitude); 
       String lng = String.valueOf(point.longitude); 
       MarkerOptions marker = new MarkerOptions().position(
         new LatLng(point.latitude, point.longitude)).title("ok"); 
       mMap.addMarker(marker); 
      } 
     }); 
    } 
} 

問: 我想要的是,當我點擊SetMylocationEnable按鈕,還增加了一個新的標誌物。而且因爲我想要標記在整個地圖中只有一個,另外一個已經在地圖上的標記將被刪除。我該怎麼做?你會教我嗎?

你可以在圖片中看到我說的按鈕是什麼。 (圖片來自:Enable my location icon Googlemap v2

enter image description here

回答

1
mMap.setOnMyLocationButtonClickListener(new OnMyLocationButtonClickListener() { 
    @Override 
    public boolean onMyLocationButtonClick() { 
     Location location = getLocation(); 
     MarkerOptions marker = new MarkerOptions().position(
       new LatLng(location.getLatitude(), location.getLongitude())).title("ok"); 
     mMap.addMarker(marker); 
     return true; 
    } 
}); 

private Location getLocation() { 
    LocationManager locationManager = (LocationManager) 
      getSystemService(Context.LOCATION_SERVICE); 
    Criteria criteria = new Criteria(); 
    return locationManager.getLastKnownLocation(locationManager 
      .getBestProvider(criteria, false)); 

} 
+0

謝謝Cabezas。但是,標記在哪裏? –

+0

我編輯了答案。 – Cabezas

+0

謝謝,Cabezas –

1

保持一個參考標記,如果引用爲null,則創建標記爲你做了,如果不是,然後編輯標記,改變其位置

+0

謝謝Cruces –

相關問題