Google map inside another fragment - Function like onLocationChanged is not working

岁酱吖の 提交于 2019-12-08 09:48:15

问题


My previous question Google map inside another fragment - Error when calling getMapAsync was answered. The google map is showing and the getMapAsync is now working.

And I'm now finding the solution to the other functions like

public void onLocationChanged(Location location) {...}

public void onConnected(Bundle bundle) {...}

Note: I'm trying to convert a google map activity to work inside a fragment that will be called in NavigationView.

samplemapFragment.java

package  com.sample.samplemap;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.MapsInitializer;

public class samplemapFragment extends Fragment implements OnMapReadyCallback {
    GoogleMap mGoogleMap;
    SupportMapFragment mFragment;

    MapView mapView;

    View mView;

    public samplemapFragment() {
        Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MapsInitializer.initialize(getContext());
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        mView = inflater.inflate(R.layout.fragment_track_travel, container, false);
        return mView;
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        mapView = (MapView) mView.findViewById(R.id.map);

        if (mapView != null) {
            // Initialise the MapView
            mapView.onCreate(null);
            mapView.onResume();
            // Set the map ready callback to receive the GoogleMap object
            mapView.getMapAsync(this);
        }

    }


    @Override
    public void onMapReady(GoogleMap googleMap) {
        MapsInitializer.initialize(getContext());
        mGoogleMap = googleMap;
        mGoogleMap.setMyLocationEnabled(true);
    }
}

fragment_sample_map.xml

<RelativeLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
tools:context="com.sample.samplemap.samplemapFragment"
xmlns:tools="http://schemas.android.com/tools">
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto" android:layout_width="384dp"
    android:layout_height="300dp" android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_marginTop="44dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentStart="true" /> 
</RelativeLayout>

回答1:


OnLocationChanged is not a method tied to a GoogleMap, it is actually related to the LocationListener (or LocationClient) API. To get notifications for OnLocationChanged, you will have to register a 'Listener' which will poll the device's location and when it registers a change, will trigger the OnLocationChanged method.

You can find a comprehensive guide with examples here: http://developer.android.com/guide/topics/location/strategies.html

Good luck!



来源:https://stackoverflow.com/questions/35494087/google-map-inside-another-fragment-function-like-onlocationchanged-is-not-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!