Я хочу получить текущее местоположение пользователя на карте. Я не могу передать «это» в качестве параметра в функции mapAsync . Я получаю ошибку в getMapAsync(this)
. Он сообщает Несовместимый тип.Не удается решить getMapAsync в фрагменте
требуется: com.google.android.gms.map.GoogleMap
найдено: void how can I solve this issue ?
Я также попытался getActivity.getApplicationContext()
, но это тоже не сработало! Здесь я предоставить код, пожалуйста, проверьте его
public class MapsActivity extends Fragment implements
OnMapReadyCallback,
View.OnClickListener ,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
LocationListener {
private GoogleMap map;
private MapView mapView;
private boolean mapsSupported = true;
private GoogleApiClient mGoogleApiClient;
MapFragment mapFragment;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
MapsInitializer.initialize(getActivity());
if (mapView != null) {
mapView.onCreate(savedInstanceState);
}
initializeMap();
}
private void initializeMap() {
SupportMapFragment mapFragment = (SupportMapFragment) getActivity().getSupportFragmentManager()
.findFragmentById(R.id.map);
//mapFragment = (SupportMapFragment)getChildFragmentManager().findFragmentById(R.id.map);
if (map == null) {
**map = mapFragment.getMapAsync(this);**
}
// Enable Zoom
map.getUiSettings().setZoomGesturesEnabled(true);
//set Map TYPE
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
//enable Current location Button
map.setMyLocationEnabled(true);
LocationManager locationManager = (LocationManager)getActivity().getSystemService(getActivity().LOCATION_SERVICE);
Criteria criteria = new Criteria();
String bestProvider = locationManager.getBestProvider(criteria, true);
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
Location location = locationManager.getLastKnownLocation(bestProvider);
if (location != null) {
onLocationChanged(location);
}
locationManager.requestLocationUpdates(bestProvider, 2000, 0, this);
}
Maps.xml
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map"
tools:context=".MapsActivity"
android:name="com.google.android.gms.maps.SupportMapFragment"
tools:layout="@layout/abc_action_menu_layout"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nearby Resturants"
android:id="@+id/btn_rest"
android:layout_gravity="bottom" />
</RelativeLayout>
вы можете использовать ** getMapAsync (getActivity()); ** – pulkit
@pulkit не работает – SFAH
Для 'getMapAsync()' для работы, 'R.id.map' должен быть элементом« MapFragment ». но это нормальный фрагмент – ShahiM